从函数调用动态SQL
我正在编写一个返回表的函数.传递给函数的参数有两个参数,构建并执行查询并将其插入到返回表中.但是我收到这个错误.
我不想使用存储过程,因为这是一个简单的效用函数.有人知道这是否可以完成.我的功能编码如下,它检查某个表中某列的重复. -- ============================================= -- AUTHOR: JON AIREY -- THIS FUNCTION WILL RETURN A COUNT OF HOW MANY -- TIMES A CERTAIN COLUMN VALUE APPEARS IN A -- TABLE. THIS IS HELPFUL FOR FINDING DUPES. -- THIS FUNCTION WILL ACCEPT A COLUMN NAME,TABLE -- NAME (MUST INCLUDE SCHEMA),AND OPTIONAL -- DATABASE TO USE. RESULTS WILL BE RETURNED AS -- A TABLE. -- ============================================= ALTER FUNCTION [dbo].[fn_FindDupe] ( -- Add the parameters for the function here @Column VARCHAR(MAX),@Table VARCHAR(100),@Database VARCHAR(100) = '' ) RETURNS @TempTable TABLE ([Column] varchar(100),[Count] int) AS BEGIN DECLARE @SQL VARCHAR(MAX) SET @Table = CASE WHEN @Database = '' THEN @Table ELSE @Database + '.' + @Table END SET @SQL = ' INSERT INTO @TempTable SELECT ' + @Column + ',COUNT(' + @Column + ') AS CNT FROM ' + @Table + ' GROUP BY ' + @Column + ' ORDER BY CNT DESC ' EXEC SP_EXECUTESQL @SQL RETURN END GO 解决方法You can’t use dynamic sql in a udf:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |