programing

mysql storage-procedure: out 매개변수

codeshow 2023. 10. 29. 20:04
반응형

mysql storage-procedure: out 매개변수

나는 이것(구글북)의 mysql 저장 프로시저를 가지고 있으며, 한 예는 다음과 같습니다.

DELIMITER $$

DROP PROCEDURE IF EXISTS my_sqrt$$
CREATE PROCEDURE my_sqrt(input_number INT, OUT out_number FLOAT)
BEGIN
    SET out_number=SQRT(input_number);
END$$

DELIMITER ;

절차는 잘 컴파일됩니다. (Ubuntu에서 MySQL Query Browser를 사용하고 있습니다.)

그러나 절차를 호출할 때는 다음과 같습니다.

CALL my_sqrt(4,@out_value);

(쿼리 브라우저에서도)

오류를 반환합니다.

(1064) check the manual that correspond to the...

이 예시는 왜 작동이 안 되는 겁니까?

복제할 수 없습니다.잘 작동했습니다.

mysql> CALL my_sqrt(4, @out_value);
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT @out_value;
+------------+
| @out_value |
+------------+
| 2          | 
+------------+
1 row in set (0.00 sec)

아마도 전체 오류 메시지를 요약하는 대신 붙여넣기를 해야 할 것입니다.

아래 코드에 입력 파라미터 *IN이 누락되어 있으므로 올바른 서명을 사용해야 합니다.

CREATE PROCEDURE my_sqrt(IN input_number INT, OUT out_number FLOAT)

MySQL Query Browser가 아닌 터미널에서 함수를 호출하려고 했는데 작동합니다.그래서, 내가 그 프로그램에서 뭔가 잘못하고 있는 것 같습니다.

이전에 몇 가지 절차를 성공적으로 호출했기 때문에(그러나 매개 변수가 없는 경우) 무엇인지 모르겠습니다.

이 일로 내가 들어갔습니다.

CALL my_sqrt(4,@out_value);
SELECT @out_value;

그리고 이로 인해 오류가 발생합니다.

SQL 구문에 오류가 있습니다. MySQL 서버 버전에 해당하는 설명서에서 2행의 'SELECT @out_value' 근처에서 사용할 올바른 구문을 확인하십시오.

이상하게도, 만약에 내가 그냥 이렇게 적이 있다면:

CALL my_sqrt(4,@out_value); 

결과 메시지는 "쿼리 취소됨"입니다.

아마 지금은 터미널만 사용할겁니다...

이것이 오래된 쓰레드라는 것을 알고 있지만, 작업대에서 왜 절차가 작동하지 않는지에 대한 답을 찾고 있는 사람이 있는데, 그 결과는 "쿼리 취소" 같은 것뿐이라고 생각하는 사람이 있다면,

오류 또는 문제가 있는 출력이 숨겨져 있습니다.왜 그런지는 모르겠지만, 짜증나는 건 이해하지만, 거기에 있어요.커서를 메시지 위의 줄 위로 이동하면 커서가 두 개의 화살표로 바뀝니다(위 아래로). 그런 다음 해당 줄을 클릭하고 끌면 놓친 메시지가 포함된 콘솔이 나타납니다.

저장 프로시저 내에서 전화하는 경우 @을 사용하지 마십시오.나의 경우 0을 반환합니다.

CALL SP_NAME(L_OUTPUT_PARAM)

SET out_number=SQRT(input_number); 

이 글 대신:

select SQRT(input_number); 

쓰지 말아주세요SET out_number입력 파라미터는 다음과 같습니다.

PROCEDURE `test`.`my_sqrt`(IN input_number INT, OUT out_number FLOAT) 

바꿔 보다OUT로.INOUT당신을 위하여out_number매개 변수 정의.

CREATE PROCEDURE my_sqrt(input_number INT, INOUT out_number FLOAT)

INOUT다음에 대한 입력 변수를 의미합니다.out_number(@out_value사용자의 경우.)는 값을 선택할 수 있는 출력 변수의 역할도 합니다.

언급URL : https://stackoverflow.com/questions/1113579/mysql-stored-procedure-out-parameter

반응형