참 많이 고민하고 생각했는데 도저히 저의 능력으로는 답을 못찾을것 같아 이렇게 도움 요청 합니다..
사용자지정함수(스칼라값함수)정의중에 동적쿼리를 작성하여 해보려고 했는데 잘 안되네요..
문제가 무엇있지 모르겠습니다..
제의 질문은 아래와 같습니다~~ 도와주세요 ㅠㅠ
===============================================아래============================================
1. 함수에서 동적 쿼리는 사용할수 없는건가요?
2. 함수에서 SP_EXECUTESQL를 사용할수 없나요?
3. SP_EXECUTESQL를 사용할수 없다면 그 이유는 무엇일까요?
4. EXECUTE (내용) 과 EXECUTE 내용 의 차이는 무엇인가요?
아래 예제에서 EXECUTE ()와 같이 갈호를 사용하는것은 에러를 발생시킵니다. 함수내에서 다른 함수를 호출할수 없다는건가요... 그저 다이나믹 쿼리를 실행하는거로
사용했는데....
EXECUTE 에서 갈호를 사용했을때 에러 : 함수 내의 'EXECUTE STRING'에서 파생 작업을 생성하거나 시간에 종속적인 연산자를 잘못 사용했습니다.
P.S 제가 아직 mssql 을 한지 얼마 안되서 잘 모르겠습니다. 혹시 이론적으로 모르는것 같은 부분은 지적해주세요 도움말 보고 열심히 공부하겠습니다.
=============================================함수원문==========================================
alter FUNCTION [dbo].[FN_GetYNToClsAcct2]
(
@DATE CHAR(8)
)
RETURNS VARCHAR(1)
AS
BEGIN
DECLARE @OUTPUT_VALUE VARCHAR(1)
DECLARE @QUERYSTR VARCHAR(8000)
DECLARE @TABLE_NAME VARCHAR(40)
DECLARE @COLUMN_NAME VARCHAR(40)
SET @TABLE_NAME ='LMD_ACCT'
SET @COLUMN_NAME ='ACCT_NO'
SET @QUERYSTR =
'SELECT ' + @OUTPUT_VALUE + ' = CASE WHEN COUNT(*) > 0 THEN ''Y'' ELSE ''N'' END
FROM ' + @TABLE_NAME + '
WHERE ' + @COLUMN_NAME + ' = ' + ' @ACCT_NO + '
EXECUTE @QUERYSTR
RETURN(@OUTPUT_VALUE )
END
|