[SQL] 함수의 동적 SQL 전화
SQL함수의 동적 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
해결법
-
==============================
1.당신은 UDF에서 동적 SQL을 사용할 수 없습니다 :
당신은 UDF에서 동적 SQL을 사용할 수 없습니다 :
from https://stackoverflow.com/questions/9607935/call-dynamic-sql-from-function by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 문자열이 SQL에 악센트 문자가 포함 된 경우 확인? (0) | 2020.04.28 |
---|---|
[SQL] VARCHAR 변수는 WHERE 절에서 작동하지 않습니다 (0) | 2020.04.28 |
[SQL] SQL의 이동과 동적 쿼리를 실행 (0) | 2020.04.27 |
[SQL] 간단한 PHP SQL 로그인 문제 해결 (0) | 2020.04.27 |
[SQL] 열 NOT NULL 제약 조건을 통해 집합 (0) | 2020.04.27 |