2016-02-19 11 views
0

Я хотел бы спросить, как я вернусь count(*), потому что каждый раз, когда я вызываю хранимую процедуру, он просто печатает результат.Возврат данных из хранимой процедуры SQL Server

Вот код:

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(*) использовать его в другом запросе. Заранее спасибо.

+0

Вы пробовали RETURN @@ Rowcount – Dijkgraaf

+0

Да, вы прямо здесь. Я попробовал, и это сработало. Спасибо @Dijkgraaf – JanLeeYu

+1

убедитесь, что @@ Rowcount сразу после заявления. Иначе вы не можете получить требуемый результат. Alternativley, назначьте его другой переменной для использования в более поздней части вашего запроса или хранимой процедуре. – Squirrel

ответ

2
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 
+0

Спасибо, что помогли. С нетерпением ждем новых вопросов. :) – JanLeeYu

+0

Вы больше всего приветствуетесь – Squirrel

Смежные вопросы