VB.net 调用简单的 T-SQL 执行标量,但没有得到结果



我有一个简单的TSQL标量函数,名为TestScalar2,如下所示。。

CREATE FUNCTION TestScalar2
(
@GVStaffID INT = 1
)
RETURNS INT
AS
BEGIN
DECLARE @Val Int
set @Val = 10
IF @GVStaffID = 1 
BEGIN
set @Val = 20
END
ELSE
BEGIN
SET @Val = 30
END
RETURN @VAL
END
GO

但是我的vb.net代码没有得到结果,它调用了它,它传递了参数,但我得到了0!。

vb代码如下。。。

cmd1.CommandType = System.Data.CommandType.StoredProcedure
cmd1.CommandText = "TestScalar2"
cmd1.Parameters.AddWithValue("@GVStaffID", GVStaffID)
cmd1.Connection = conn
conn.Open()
returnValue = Convert.ToInt32(cmd1.ExecuteScalar())
MsgBox(GVStaffID)
conn.Close()
MsgBox(returnValue)

非常感谢任何帮助,因为我已经无计可施了!

您不是在调用存储过程。您正在调用一个函数。进行此更改:

cmd1.CommandType = System.Data.CommandType.Text
cmd1.CommandText = "Select TestScalar2(@GVStaffID)"

所以我终于开始工作了。。。我创建了一个存储过程,添加了一个输出参数,并使用了execute non-query cmd!

cmd1.CommandType = System.Data.CommandType.StoredProcedure
cmd1.CommandText = "TestScalar"
cmd1.Parameters.AddWithValue("@GVStaffID", GVStaffID)
cmd1.Parameters.Add("@Val", SqlDbType.Int).Direction = ParameterDirection.ReturnValue
cmd1.Connection = conn
conn.Open()
cmd1.ExecuteNonQuery()
MsgBox(GVStaffID)
returnValue = cmd1.Parameters("@Val").Value
conn.Close()
MsgBox(returnValue)

瞧,它起了作用,但那两个小时我再也回不来了!

使用

select ResultValue=dbo.TestScalar2(@p1)

有必要使用模式名称(dbo.(

最好将值分配给变量

最新更新