我想創建函數,讓我回行數取決於參數是表的名稱。可能嗎 ?如果是,如何更改代碼:
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
謝謝你的回答。
您需要使用dynamic query
這個像
declare @sql nvarchar(250);
set @sql = 'SELECT COUNT(*) AS N_ROWS FROM ' + @sometable;
exec(@sql);
但同樣,你要創建一個FUNCTION
,你不能有功能的動態查詢。您可能想將其轉換爲stored procedure
謝謝拉胡爾的提示。 – Arcadio
謝謝Rahul提示。
我不喜歡的是:
....
BEGIN
DECLARE @ret INT
DECLARE @sql NVARCHAR(MAX)
SET @sql = 'SELECT COUNT(*)FROM N_ROWS' + @sometable
EXEC sp_executesql @ret = @sql
RETURN @ret
END;
你不能在函數中有動態查詢。您可能需要將其轉換成一個存儲過程
CREATE PROC proc_name中 ( @sometable NVARCHAR(50) ) AS BEGIN DECLARE @Name VARCHAR(200) SET @Name =「SELECT COUNT(* )AS N_ROWS FROM'+ @sometable; EXEC(@Name) END
我想你需要在這裏使用動態SQL。有關更多信息,請參見https://www.mssqltips.com/sqlservertip/1160/execute-dynamic-sql-commands-in-sql-server/。 –
謝謝你的聯繫。 – Arcadio