에 내가 SQL 서버에 새로 온 사람, 그리고 내가 고칠 수 없습니다이 오류가 있습니다SQL 서버 출력 및 반환 값이 과정
메시지 245, 수준 16, 상태 1, 프로 시저 정보, 오류, 내가 그것을 어떻게 어디를 해결할 수 있습니다 보여주세요 수 int 데이터 형식
에 '스티븐'은 VARCHAR 값을 변환 할 때 선 (11)
변환 실패?
코드는 다음과 같이 감사합니다.
CREATE PROCEDURE info (@id int, @howMuch int OUTPUT)
AS
SELECT *
FROM emp
WHERE empno = @id;
SELECT @howMuch = COUNT(*)
FROM emp;
DECLARE @name varchar(100)
SELECT @name = ename
FROM emp
WHERE empno = @id
RETURN @name
-- execute the procedure. It throws error.
DECLARE @num_rows int, @who varchar(100)
EXECUTE @who = info 100, @num_rows OUTPUT
SELECT @num_rows, @who
나는 것으로 나타났습니다 "@name", 프로 시저가 작동하며 "@name"이 표시됩니다. "return"대신 "@name"을 출력 매개 변수로 사용하면 잘 작동합니다. "return"을 사용하여 @name을 반환하는 경우에만 오류가 발생한 것으로 보입니다. 이유가 무엇인가요? 이해하기가 부족합니다. – andrea
당신은 PRINT와 RETURN이하는 일을 오해하고 있습니다. RETURN이 호출자에게 값을 푸시하는 동안 Print는 컴파일러에 값을 푸시합니다 (예 : 쿼리에서 정의한 값). 이러한 규칙은 [MSDN 설명서] (https://msdn.microsoft.com/en-us/library/ms187926.aspx)에 정의되어 있습니다. 일반적으로 FUNCTION을 사용하는 것이 적절하지만 proc 자체에서 OUPUT 문을 사용할 수도 있습니다. 호출자에게 값을 반환합니다. –
예, 이제 알겠습니다. 나는 반환의 사용을 이해하지 못했습니다. 전 int가 아닌 모든 유형의 데이터를 반환 할 수 있다고 생각했습니다. 이제는 분명합니다. 고맙습니다. – andrea