Sql server 将在dot net上定义的SQL脚本转换为存储过程/TSQL

Sql server 将在dot net上定义的SQL脚本转换为存储过程/TSQL,sql-server,sql-server-2012,sql-server-2008-r2,Sql Server,Sql Server 2012,Sql Server 2008 R2,我正在将内联SQL转换为存储过程。以下是内联脚本 cmdText += "insert into scopeofworktoapptresultsoverride(scopeofworkid, overwrittentext, createdbyid, datecreated, alptorprodid, isaccomplishlist, isproducttype, ismaterial, apptresultid) " cmdText += "values (" & iNewOve

我正在将内联SQL转换为存储过程。以下是内联脚本

cmdText += "insert into scopeofworktoapptresultsoverride(scopeofworkid, overwrittentext, createdbyid, datecreated, alptorprodid, isaccomplishlist, isproducttype, ismaterial, apptresultid) "
cmdText += "values (" & iNewOverrideId & ", '" & sText & "',  " & iEmployeeId & ", getdate(), " & iTiedToId & ", "
If sTiedTo = "material" Then
    cmdText += "0, 0, 1 "
ElseIf sTiedTo = "producttype" Then
    cmdText += "0, 1, 0 "
Else
    cmdText += "1, 0, 0 "
End If
cmdText += ", " & iResult & " )"
我已经像下面那样转换了这个内联SQL。是否有其他方法可以在带有case…when…的单个insert语句中实现这一点。。。。或者某种最好的方法

IF @sTiedTo = 'material'
    BEGIN
        INSERT INTO scopeofworktoapptresultsoverride (
            scopeofworkid
            ,overwrittentext
            ,createdbyid
            ,datecreated
            ,alptorprodid
            ,isaccomplishlist
            ,isproducttype
            ,ismaterial
            ,apptresultid
            )
        VALUES (
            @iNewOverrideId
            ,@sText
            ,@iEmployeeId
            ,getdate()
            ,@iTiedToId
            ,0
            ,0
            ,1
            ,@iResult
            )
    END
    ELSE IF @sTiedTo = 'producttype'
    BEGIN
        INSERT INTO scopeofworktoapptresultsoverride (
            scopeofworkid
            ,overwrittentext
            ,createdbyid
            ,datecreated
            ,alptorprodid
            ,isaccomplishlist
            ,isproducttype
            ,ismaterial
            ,apptresultid
            )
        VALUES (
            @iNewOverrideId
            ,@sText
            ,@iEmployeeId
            ,getdate()
            ,@iTiedToId
            ,0
            ,1
            ,0
            ,@iResult
            )
    END
    ELSE
    BEGIN
        INSERT INTO scopeofworktoapptresultsoverride (
            scopeofworkid
            ,overwrittentext
            ,createdbyid
            ,datecreated
            ,alptorprodid
            ,isaccomplishlist
            ,isproducttype
            ,ismaterial
            ,apptresultid
            )
        VALUES (
            @iNewOverrideId
            ,@sText
            ,@iEmployeeId
            ,getdate()
            ,@iTiedToId
            ,1
            ,0
            ,0
            ,@iResult
            )
    END

您可以查看每个布尔字段的用例,因此只需要一条insert语句() 例如,要设置IsMaterial列,请使用:
case当@sTiedTo='material'然后是1 else 0 end时

您可以查找每个布尔字段的用例,因此只需要一个insert语句() 例如,要设置IsMaterial列,请使用: 当@sTiedTo='material'然后1 else 0结束时的情况

类似于(未测试,从我的头顶)

插入到工作范围以应用SultSoverride(
工作范围ID
,覆盖文本
,createdbyid
,datecreated
阿普托普罗迪德
,isaccomplishlist
,iProductType
,是物质的
,apptresultid
)
价值观(
@白藜芦醇苷
,@sText
,@iEmployeeId
,getdate()
,@iTiedToId
,当@sTiedTo“material”和@isTiedTo“producttype”时为1,否则为0结束
,当@sTiedTo='producttype'时为大小写,然后为1,否则为0结束
,当@sTiedTo='material'时为1,则为0结束
,@iResult
)
类似(未经测试,从我的头顶)

插入到工作范围以应用SultSoverride(
工作范围ID
,覆盖文本
,createdbyid
,datecreated
阿普托普罗迪德
,isaccomplishlist
,iProductType
,是物质的
,apptresultid
)
价值观(
@白藜芦醇苷
,@sText
,@iEmployeeId
,getdate()
,@iTiedToId
,当@sTiedTo“material”和@isTiedTo“producttype”时为1,否则为0结束
,当@sTiedTo='producttype'时为大小写,然后为1,否则为0结束
,当@sTiedTo='material'时为1,则为0结束
,@iResult
)

谢谢我感谢你的接近谢谢我感谢你的接近谢谢你的回答。我已经选择了影子答案,但是我可以投赞成票。谢谢你的回答。我已经选择了影子答案,但我可以投赞成票。
Declare @isaccomplishlist bit
Declare @isproducttype bit
Declare @ismaterial bit

Set @isaccomplishlist = 0
Set @isproducttype = 0
Set @ismaterial = 0

IF @sTiedTo = 'material' BEGIN    
    Set @ismaterial = 1    
END
ELSE IF @sTiedTo = 'producttype' BEGIN
    Set @isproducttype = 1
END
ELSE BEGIN
    Set @isaccomplishlist = 1
END

INSERT INTO scopeofworktoapptresultsoverride (
            scopeofworkid
            ,overwrittentext
            ,createdbyid
            ,datecreated
            ,alptorprodid
            ,isaccomplishlist
            ,isproducttype
            ,ismaterial
            ,apptresultid
            )
        VALUES (
            @iNewOverrideId
            ,@sText
            ,@iEmployeeId
            ,getdate()
            ,@iTiedToId
            ,@isaccomplishlist
            ,@isproducttype
            ,@ismaterial
            ,@iResult
            )
INSERT INTO scopeofworktoapptresultsoverride (
        scopeofworkid
        ,overwrittentext
        ,createdbyid
        ,datecreated
        ,alptorprodid
        ,isaccomplishlist
        ,isproducttype
        ,ismaterial
        ,apptresultid
        )
    VALUES (
        @iNewOverrideId
        ,@sText
        ,@iEmployeeId
        ,getdate()
        ,@iTiedToId
        ,CASE WHEN @sTiedTo <> 'material' AND @isTiedTo <> 'producttype' THEN 1 ELSE 0 END
        ,CASE WHEN @sTiedTo = 'producttype' THEN 1 ELSE 0 END
        ,CASE WHEN @sTiedTo = 'material' THEN 1 ELSE 0 END
        ,@iResult
        )