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
'programing' 카테고리의 다른 글
뒤로 가기 단추에서 텍스트를 변경하는 방법 (0) | 2023.10.29 |
---|---|
리소스를 로드하고 해당 리소스의 내용을 봄에 문자열로 사용하는 방법 (0) | 2023.10.29 |
browser.pause()와 browser.enterRepl()의 차이점은 무엇입니까? (0) | 2023.10.29 |
최근 한 시간 동안 수정된 테이블 찾기 쿼리 (0) | 2023.10.29 |
안드로이드:사용자 이름과 암호를 저장하고 있습니까? (0) | 2023.10.29 |