select 문을 실행하는 함수가 있습니다.SQL 유효하지 않은 식별자 오류
Msg 203, Level 16, State 2, Procedure Info_GetWholeNumber, Line 20
The name 'SELECT MAX(LEN(CAST(FLOOR([pcom_audit_cant_con]) AS VARCHAR(38)))) AS WHOLE_NO FROM Auditorias.prod_com_audit' is not a valid identifier.
내가 복사 문을 선택 붙여 넣기가 잘 작동하면 ... 그러므로 그것의 : 내 함수가 다음과 같은 오류와 충돌 변수에 단일 값을 반환하고 설정이 선택 문을 실행하려고 할 때 선택하지 내 EXEC 함께 할 수있는 뭔가가 ... 어쨌든 ... 여기 내 기능 코드의 내가 정말 도움을 주셔서 감사합니다 것이 문제를 해결할 수있는 방법을
ALTER FUNCTION [dbo].[Info_GetWholeNumber]
(
@TABLE VARCHAR(MAX)
, @COLUMN VARCHAR(MAX)
)
RETURNS INT
AS
BEGIN
-- Declare the return variable here
DECLARE @WHOLE_NO INT
-- Add the T-SQL statements to compute the return value here
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'SELECT MAX(LEN(CAST(FLOOR([' + @COLUMN + ']) AS VARCHAR(38))))
AS WHOLE_NO FROM ' + @TABLE
EXEC @WHOLE_NO = @SQL
-- Return the result of the function
RETURN @WHOLE_NO
END
사람이 어떤 아이디어가있는 경우
! 미리 감사드립니다!업데이트합니다 메신저 진술로 sp_executesql을 기능을 사용하려고 시도하고 난 새로운 기능을 붙여 갈거야, 그래서
확인을 클릭합니다.
메시지 1087, 수준 16, 상태 1, 줄 1 내 의견에 보이는 테이블 변수 "@TBL"
를 선언해야합니다 :
ALTER FUNCTION [dbo].[Info_GetWholeNumber]
(
@TABLE VARCHAR(MAX)
, @COLUMN VARCHAR(MAX)
)
RETURNS INT
AS
BEGIN
DECLARE @WHOLE_NO INT
DECLARE @SQL NVARCHAR(MAX)
DECLARE @PARAMS NVARCHAR(MAX)
SET @SQL = N'SELECT @WHOLE_NOOUT = MAX(LEN(CAST(FLOOR(@COL) AS VARCHAR(38)))) FROM @TBL'
SET @PARAMS = N'@COL VARCHAR(MAX), @TBL VARCHAR(MAX), @WHOLE_NOOUT INT OUTPUT'
EXECUTE sp_executesql @SQL, @PARAMS, @COL = @COLUMN, @TBL = @TABLE, @WHOLE_NOOUT = @WHOLE_NO OUTPUT;
-- Return the result of the function
RETURN @WHOLE_NO
END
지금이 오류를 얻고있다 변수가 @PARAM 변수 이외의 변수로 선언되지 않았기 때문에 정확합니다 ... 여기에 뭔가 빠졌습니까?
당신은 내가 이후 내 경우에는 select 문 것을 실행에 대한 갈 것이라고 어떻게 기능 – Lamak
@Lamak에'EXEC'을 사용할 수 없습니다 그 동적...? –
여전히 'EXECUTE' 또는'sp_executesql'을 사용할 수 없으며 함수 내에서 다른 저장 프로 시저를 호출 할 수 없습니다. 왜 이것이 기능이되어야합니까? –