我正在尝试创建一个可以对表进行计数的简单函数。我想以参数的形式将表名传递给变量,此函数将计数作为int返回。请参阅下面的我的功能,并帮助我理解为什么这不起作用。
CREATE FUNCTION count_rows
(@tablename varchar(100)
RETURNS int AS
BEGIN
DECLARE @emp_count AS int
declare @declaration varchar(100)
@declaration='SELECT count(*)
FROM ' + @tablename
@emp_count=cast(@declaration as int)
RETURN @emp_count
END
GO
我得到的错误如下:
消息102,级别15,状态1,过程count_rows,第3行不正确 'RETURNS'附近的语法。消息102,级别15,状态1,过程 count_rows,第10行'@declaration'附近的语法不正确。消息178, 级别15,状态1,过程count_rows,第14行RETURN语句 返回值不能在此上下文中使用。
答案 0 :(得分:0)
您需要使用动态SQL来处理从应用程序传入的表名。对于动态sql,功能是不可能的。您将需要使用存储过程来执行此操作。