SQL Server:向参数发送参数 - 参数是表的名称

时间:2016-09-23 22:22:23

标签: sql sql-server function


我想创建函数,给我回行数取决于参数,这是表的名称。可能吗 ?如果是,请如何更改代码:

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

感谢您的回答。

3 个答案:

答案 0 :(得分:0)

您需要使用dynamic query,例如

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

但是,您再次尝试创建FUNCTION并且无法在功能中进行动态查询。您可能希望将其转换为stored procedure

答案 1 :(得分:0)

谢谢Rahul的暗示。
我是这样想的:
 .... 开始
          DECLARE @ret INT
          DECLARE @sql NVARCHAR(MAX)
          SET @sql =' SELECT COUNT(*)N_ROWS FROM' + @sometable
          EXEC sp_executesql @ret = @sql
          返回@ret
     结束;

答案 2 :(得分:0)

您无法在功能中进行动态查询。您可能希望将其转换为存储过程

CREATE PROC PROC_Name (   @sometable NVARCHAR(50) ) 如 开始      DECLARE @Name VARCHAR(200)      SET @Name =' SELECT COUNT(*)AS N_ROWS FROM' + @sometable;      执行(@Name) END