是否可以在c#中使用存储过程,因为我已经在VB.net上尝试了它,当我可以设置它只需要的参数时让我们说我有一个这样的存储过程:
ALTER PROC [dbo].[StoreProcedure_Test01]
(
@Param01 nvarchar(35) = NULL,
@Param02 smallint = NULL,
@Param03 char(21) = NULL,
@Param04 datetime = NULL,
@Type bigint
)
WITH EXECUTE AS CALLER
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRY
BEGIN TRANSACTION;
IF @Type =1
BEGIN
SELECT Col1, Col2, Col3 From TABLE00 Col00 = @Param2
END
IF @Type = 2
BEGIN
Select * FROM TABLE01 where Col01 = @Param1 and Col04 = @Param03
END
END
现在在我调用存储过程的C#代码中我喜欢这样:
var query = (from i in LinQ.StoreProcedure_Test01(Param01, Param02, Param03, Param04, 1) where i.Col00 == 1 select new { AA = i.Param01, AB = i.Param02 });
现在在参数上我为存储过程中的if语句放置1,问题是如果我选择它,只给我第一个if语句返回数据,如果我这样做:
var query = (from i in LinQ.StoreProcedure_Test01(Param01, Param02, Param03, Param04, 2) where i.Col00 == 1 select new { "ALL TABLE" });
为存储过程中的if语句设置了一个参数,它仍然从第一个if语句给出了相同的返回数据,它忽略了第二个if语句是否有一种方法可以使用存储过程为多个条件的c#和我使用虚拟表时特别需要的参数也忽略了它。有可能吗?
只是为了加上我的一些流行行为,我尝试使用ado.net框架在vb.net上做这件事。
Try
cmd = New SqlCommand
da = New SqlDataAdapter
cmd.Connection = con
cmd.CommandText = "[StoreProcedure_Test01]" 'this is your store procedure
cmd.CommandType = CommandType.StoredProcedure
With cmd
.Parameters.Add(New SqlParameter("@Param01", SqlDbType.NVarChar))
.Parameters("@Param01").Direction = ParameterDirection.Input
.Parameters("@Param01").Value = Parameter01
.Parameters.Add(New SqlParameter("@Param02", SqlDbType.NVarChar))
.Parameters("@Param02").Direction = ParameterDirection.Input
.Parameters("@Param02").Value = Parameter02
.Parameters.Add(New SqlParameter("@Param03", SqlDbType.NVarChar))
.Parameters("@Param03").Direction = ParameterDirection.Input
.Parameters("@Param03").Value = Parameter03
.Parameters.Add(New SqlParameter("@Param04", SqlDbType.NVarChar))
.Parameters("@Param04").Direction = ParameterDirection.Input
.Parameters("@Param04").Value = Parameter04
.Parameters.Add(New SqlParameter("@Type", SqlDbType.Int))
.Parameters("@Type").Direction = ParameterDirection.Input
.Parameters("@Type").Value = 1
End With
cmd.ExecuteNonQuery()
Return True
Catch ex As Exception
MsgBox(ex.Message)
Finally
cmd.Dispose()
End Try
如上所示它的灵活性因为我可以添加与我所做的商店程序条件相同的参数我想知道的是,当涉及到c#linq是否可以这样做? :(