テーブルの名前であるパラメータに応じて行の数を戻す関数を作成したいと思います。出来ますか ?はいの場合、コードを変更する方法:
SQL Server:関数にパラメータを送る - パラメータの名前はテーブルの名前です
CREATE FUNCTION MyFunction (@sometable NVARCHAR(50))
RETURNS TABLE
AS
RETURN SELECT COUNT(*) N_ROWS FROM @sometable
ありがとうございました。
テーブルの名前であるパラメータに応じて行の数を戻す関数を作成したいと思います。出来ますか ?はいの場合、コードを変更する方法:
SQL Server:関数にパラメータを送る - パラメータの名前はテーブルの名前です
CREATE FUNCTION MyFunction (@sometable NVARCHAR(50))
RETURNS TABLE
AS
RETURN SELECT COUNT(*) N_ROWS FROM @sometable
ありがとうございました。
あなたは
declare @sql nvarchar(250);
set @sql = 'SELECT COUNT(*) AS N_ROWS FROM ' + @sometable;
exec(@sql);
のように、このためdynamic query
を使用する必要がある。しかし、再び、あなたはFUNCTION
を作成しようとしているとあなたが関数内で動的なクエリを持つことはできません。それをstored procedure
に変更することがあります。
ヒントのためにRahulさんありがとうございます。 – Arcadio
ヒントのために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;
機能で動的クエリを使用することはできません。あなたは DECLARE @Name VARCHAR(200) SET @Name =「SELECT COUNT(*をBEGIN AS PROCたproc_name ( @sometable NVARCHAR(50) )を作成し、ストアドプロシージャ
にそれを変換することもできます)AS N_ROWS FROM '+ @sometable; EXEC(@Name) END
ここでは動的SQLを使用する必要があると思います。詳細については、https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/を参照してください。 –
ありがとうございました。 – Arcadio