Sql server 从SQL Server存储过程返回数据

Sql server 从SQL Server存储过程返回数据,sql-server,stored-procedures,return-value,Sql Server,Stored Procedures,Return Value,我想问一下如何返回计数(*),因为每次调用存储过程时,它只打印结果 代码如下: ALTER PROCEDURE sp_returnCount @tblname sysname , @colname sysname , @key varchar(10) AS DECLARE @sql nvarchar(4000) DECLARE @num INT DECLARE @params NVARCHAR (4000) SELECT @sql =

我想问一下如何返回
计数(*)
,因为每次调用存储过程时,它只打印结果

代码如下:

ALTER PROCEDURE sp_returnCount
    @tblname sysname
    , @colname sysname
    , @key varchar(10) 
AS
    DECLARE @sql nvarchar(4000)
    DECLARE @num INT
    DECLARE @params NVARCHAR (4000)

    SELECT @sql = 'SELECT COUNT(*) ' +
              ' FROM dbo.' + quotename(@tblname) + 
              ' WHERE ' + quotename(@colname) + ' LIKE @key'

    EXEC sp_executesql @sql, N'@key varchar(10)', @key
    --just prints 5 or any numbers...

我想返回
count(*)
以在另一个查询中使用它。提前谢谢。

你试过退货吗@@rowcount是的,你说得对。我试过了,它成功了。谢谢@dijkgraaf确保@Rowcount紧跟在语句之后。否则,您可能无法获得所需的结果。或者,将其分配给另一个变量,以便在查询或存储过程的后续部分中使用注意:不应在存储过程中使用
sp\uu
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!你试过返回吗@@rowcount是的,你就在那里。我试过了,它成功了。谢谢@dijkgraaf确保@Rowcount紧跟在语句之后。否则,您可能无法获得所需的结果。或者,将其分配给另一个变量,以便在查询或存储过程的后续部分中使用注意:不应在存储过程中使用
sp\uu
前缀。微软已经这样做了,而且你确实有可能在将来的某个时候发生名称冲突。最好只是简单地避免使用
sp.
并使用其他东西作为前缀,或者根本不使用前缀!谢谢你的帮助。期待向您提出更多问题。:)谢谢你的帮助。期待向您提出更多问题。:)
ALTER PROCEDURE sp_returnCount
    @tblname sysname
    , @colname sysname
    , @key varchar(10)
AS

DECLARE @sql nvarchar(4000)
DECLARE @num INT
DECLARE @params NVARCHAR (4000) 
DECLARE @count int

SELECT @sql = 'SELECT @count = COUNT(*) ' +
              ' FROM dbo.' + quotename(@tblname) + 
              ' WHERE ' + quotename(@colname) + ' LIKE @key'

EXEC sp_executesql @sql, N'@key varchar(10), @count int OUTPUT', @key, @count OUTPUT