我想创建函数,让我回行数取决于参数是表的名称。可能吗 ?如果是,如何更改代码:
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