我想在SQL Server 2008中使用caseafter where子句; 我怎么能像它一样使用它
select *
from MPR
where
case when @min >= 0
then MainComponent_Id = @mainc and SubComponent_Id = @subcomp
else MainComponent_Id = @mainc and SubComponent_Id = @subcomp and MinorComponent_Id = @minorc
end
end
Run Code Online (Sandbox Code Playgroud)
我正在使用存储过程,并且在我的存储过程中,如果minorcomponent_id值为0,那么它将添加1,否则其中2将起作用.
我曾经努力过,但在近乎情况下给出了错误.
怎么解决?
谢谢
我有如下要求:
SELECT code from Products
Run Code Online (Sandbox Code Playgroud)
样品:
If code is : 1234 => 00001234
12345 => 00012345
..... => xxxxxxxx
Run Code Online (Sandbox Code Playgroud)
我想在SQL Server 2012中使用存储过程来执行此操作.
我想使用SQL Server 2012创建一个存储过程,该存储过程传入一个字符串列表并检查每个条目。Iv将列表添加到一个逗号分隔的字符串'UserGroupsAllowedToViewMap'中。这适用于一个条目,但是我需要检查它是否包含多个条目。
public DataTable GetMapsWithWorkspaceForUserGroups(int workspaceID, string UserGroupsAllowedToViewMap)
{
DataTable mapDets = new DataTable();
SqlCommand oComm = new SqlCommand();
SqlParameter spParam_WrkSpaceId = new SqlParameter();
SqlParameter spParam_ViewMap = new SqlParameter();
SqlParameter[] spParams = new SqlParameter[2];
SqlDataAdapter daUserMaps = new SqlDataAdapter();
try
{
spParam_WrkSpaceId.ParameterName = "@workspaceID";
spParam_WrkSpaceId.Value = workspaceID;
spParams[0] = spParam_WrkSpaceId;
spParam_ViewMap.ParameterName = "@ViewMap";
spParam_ViewMap.Value = UserGroupsAllowedToViewMap;
spParams[1] = spParam_ViewMap;
oComm = CreateCommand("GetWorkspaceMapDetailsForUserByGroups", spParams, TypeOfConnectionString.GeoAppBuilder);
daUserMaps.SelectCommand = oComm;
daUserMaps.Fill(mapDets);
}
catch (Exception e)
{
throw (e);
}
finally
{
CloseConnection(); …Run Code Online (Sandbox Code Playgroud) 我在C#中使用winforms来启动存储在MS SQL Server数据库中的过程.我只有一个变量,它是@XmlStr.我有一个文本框,它将包含变量和我想要启动该过程的按钮.任何人都可以帮我这样做吗?我整天都在研究这个问题,到目前为止还没有找到任何对我有用的东西.
我想构建一个存储过程:1.截断表A 2.截断表B 3.在表A中插入(大量)行4.在表B中插入(大量)行
存储过程应仅在步骤4之后提交语句,以便表不会被锁定并且不会遇到停机时间.如果发生错误(例如,在步骤4中),则必须回滚所有更改.我自己尝试写这篇文章,但是在每次发言之后都做了.
create or replace PROCEDURE upall as
BEGIN
execute immediate 'truncate table MAIN.SET';
insert into MAIN.SET select * from MAIN.SET_STAG;
execute immediate 'truncate table MAIN.TYPE';
insert into MAIN.TYPE select * from MAIN.TYPE_STAG;
COMMIT;
EXCEPTION WHEN OTHERS THEN
ROLLBACK;
RAISE;
END;
Run Code Online (Sandbox Code Playgroud) 下面是合同开发人员为我写的一个大规模存储过程,我觉得我正在挑选开发人员,但这很糟糕.您可以看到哪些主要问题?
CREATE PROCEDURE [dbo].[usp_SHS_XXXX]
(
@request_identifier varchar(255),
@category_guids varchar(4000),
@url varchar(500),
@section_id int,
@NoOfDaysToRank int = 45,
@SaleRankWeight decimal(18,2) = 1.0,
@QuantityRankWeight decimal(18,2) = 1.0,
@NewItemWeight decimal(18,2) = 0.2
)
AS
BEGIN
SET NOCOUNT ON
declare @tblCatAttrFilteredPhysicalItems table
(
[request_identifier] [uniqueidentifier] NULL,
[item_guid] [uniqueidentifier] NULL,
[item_cd] [varchar](25) NULL,
[master_guid] [uniqueidentifier] NULL,
[item_type_id] [int] NULL,
[item_description_title] [varchar](100) NULL,
[item_description_short] [varchar](255) NULL,
[item_description] [varchar](3000) NULL,
[item_retail_price] [decimal](18, 2) NULL,
[item_sale_price] [decimal](18, 2) NULL,
[item_backorderable] [int] NULL,
[item_discontinued] [int] NULL,
[item_available] [int] NULL, …Run Code Online (Sandbox Code Playgroud) 考虑没有任何主键或外键的表。我想编写一个程序,它将删除给定表名的所有重复行。
如果所有字段都相同,则该行应被视为其他行的重复。
如果可以的话,你能建议我吗。我尝试过的一件事是按每个领域分组,但是这种方法并不通用。
我创建了一个存储过程以便将数据插入数据库,因为我是存储过程的新手,所以我没有得到这个问题的确切解决方案,以下是我的查询:
create PROCEDURE retrieveSiteDetails
(in longitude varchar(50),in latitude varchar(50),in email_id varchar(60),in file_id varchar(10),
in unique_site_id varchar(25),in description varchar(150),in site varchar(30),in batch varchar(20),
in group_is varchar(85),in enumeration varchar(20),in created_at datetime,in modified_at datetime)
BEGIN
insert into geodata (longitude,latitude,email_id,file_id, unique_site_id,description,site,batch,
group_is,enumeration,created_at,modified_at) values (in_longitude,in_latitude,in_email_id,
in_file_id,in_unique_site_id,in_description,in_site,in_batch,in_group_is,in_enumeration,
in_created_at,in_modified_at);
END
Run Code Online (Sandbox Code Playgroud)
请帮我解决这个查询问题
我正在使用存储过程,并用逗号将其传递给字符串,如下所示:
Apple,Banana,Orange
Run Code Online (Sandbox Code Playgroud)
我想在IN子句中使用此字符串,但是我不想使用
SELECT value
FROM STRING_SPLIT(@MyStr, ',')
Run Code Online (Sandbox Code Playgroud)
我如何生成可以使用的字符串
SELECT *
FROM MyTable
WHERE Fruit IN (@MyStr)
Run Code Online (Sandbox Code Playgroud) 我有一个用于将存储过程错误记录到Oracle数据库的文件,但是在执行存储过程时却出现了错误
ORA-06502:PL / SQL:数字或值错误:字符到数字的转换错误
ORA-06512:在第1行
之前我使用的是Microsoft企业日志记录,但现在使用oracle.managed.dataaccess。我的代码如下所示。
如何在我的新代码中解决此部分false,(byte)0,(byte)0,(string)null,DataRowVersion.Default?