2016-09-23 12 views
0


テーブルの名前であるパラメータに応じて行の数を戻す関数を作成したいと思います。出来ますか ?はいの場合、コードを変更する方法:
SQL Server:関数にパラメータを送る - パラメータの名前はテーブルの名前です

CREATE FUNCTION MyFunction (@sometable NVARCHAR(50)) 
RETURNS TABLE 
AS 
RETURN SELECT COUNT(*) N_ROWS FROM @sometable 

ありがとうございました。

+0

ここでは動的SQLを使用する必要があると思います。詳細については、https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/を参照してください。 –

+0

ありがとうございました。 – Arcadio

答えて

0

あなたは

declare @sql nvarchar(250); 
set @sql = 'SELECT COUNT(*) AS N_ROWS FROM ' + @sometable; 
exec(@sql); 

のように、このためdynamic queryを使用する必要がある。しかし、再び、あなたはFUNCTIONを作成しようとしているとあなたが関数内で動的なクエリを持つことはできません。それをstored procedureに変更することがあります。

+0

ヒントのためにRahulさんありがとうございます。 – Arcadio

0

ヒントのためにRahulさんにありがとうございます。
....
=
+ @sometable 'SELECT COUNT(*)はFROM N_ROWS'
DECLARE @ret INT
DECLAREの@sql NVARCHAR(MAX)
SETの@sqlをBEGIN:私はそのようにやった
EXEC sp_executesql @ret = @sql
RETURN @ret
END;

0

機能で動的クエリを使用することはできません。あなたは DECLARE @Name VARCHAR(200) SET @Name =「SELECT COUNT(*をBEGIN AS PROCたproc_name ( @sometable NVARCHAR(50) )を作成し、ストアドプロシージャ

にそれを変換することもできます)AS N_ROWS FROM '+ @sometable; EXEC(@Name) END

関連する問題