我想创建函数,给我回行数取决于参数,这是表的名称。可能吗 ?如果是,请如何更改代码:
CREATE FUNCTION MyFunction ( @sometable NVARCHAR(50) )
RETURNS TABLE
AS
RETURN SELECT COUNT(*) N_ROWS FROM @sometable
感谢您的回答。
答案 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