我想要在 SQL Server 中创建调用函数,它接收两个参数并返回一个整数。当我调用存储过程时,我使用以下代码:
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.CommandText = "PROCEDURE_NAME"
sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@param1", Utilities.NothingToDBNull(user)))
sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@param2", Utilities.NothingToDBNull(password)))
da = New SqlClient.SqlDataAdapter()
da.SelectCommand = sqlcmd
table = New DataTable()
da.Fill(table)
在本例中,我有一个由存储过程返回的表。如果我想使用返回标量值的函数而不是存储过程,会有什么变化?
您不能直接调用该函数,只能StoredProcedure
, Text
(query), and TableDirect
被允许。既然您已经接触过存储过程,为什么不创建一个包含该函数的过程呢?
在您的 C# 代码中,您可以使用ExecuteScalar
你的命令对象
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.CommandText = "PROCEDURE_NAME"
sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@param1", Utilities.NothingToDBNull(user)))
sqlcmd.Parameters.Add(New SqlClient.SqlParameter("@param2", Utilities.NothingToDBNull(password)))
Dim obj as Object = sqlcmd.ExecuteScalar()
' obj hold now the value from the stored procedure.
您的存储过程现在应该如下所示,
CREATE PROCEDURE PROCEDURE_NAME
@param1 VARCHAR(15),
@param2 VARCHAR(15)
AS
BEGIN
SELECT function_name(@param1, @param2)
FROM...
WHERE....
END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)