[SQL] SELECT 작동하지 MySQL을 저장 프로 시저 (기본 질문)
SQLSELECT 작동하지 MySQL을 저장 프로 시저 (기본 질문)
나는 내가 잘못을 뭘하는지 알아낼 수 없습니다 내 쿼리의 대부분을 저장 프로 시저를 사용하는 저를 필요로하는 플랫폼 (perfectforms)를 사용하고, 저장 프로 시저를 사용한 적이 한. 다음 문은 오류없이 실행 :
DELIMITER //
DROP PROCEDURE IF EXISTS test_db.test_proc//
CREATE PROCEDURE test_db.test_proc() SELECT 'foo'; //
DELIMITER ;
하지만 사용하여 전화를 할 때 :
CALL test_proc();
나는 다음과 같은 오류가 발생합니다 :
#1312 - PROCEDURE test_db.test_proc can't return a result set in the given context
내가 phpMyAdmin을 3.2.4 내에서 다음 문을 실행하고, PHP 버전 5.2.12과 MySQL의 서버 버전은 5.0.89 - 커뮤니티입니다.
내가 선택한 그 반환 매개 변수 저장 프로 시저를 작성하고시, 일 잘 작동 (예를 들어)
DELIMITER //
DROP PROCEDURE IF EXISTS test_db.get_sum//
CREATE PROCEDURE test_db.get_sum(out total int)
BEGIN
SELECT SUM(field1) INTO total FROM test_db.test_table;
END //
DELIMITER ;
벌금을 작동하고, 나는 그것을 호출 할 때 :
CALL get_sum(@t); SELECT @t;
나는 합계에게 문제를 얻을 수 없습니다.
내가 전화를하고, 여러 분야의 여러 행을 반환 할 수 있도록 궁극적으로, 나는, IS 저장 프로 시저에 싸서 멋진 SELECT 문이 무엇을 필요가있다. 지금은 그냥 어떤 선택 작업을 얻기 위해 노력하고있어.
어떤 도움도 대단히 감사합니다.
해결법
-
==============================
1.그것을 알아 냈다. 이것은 (예전하지만) PHP와 버그가 아닙니다 - 그것은 phpMyAdmin을 일부 버전의 버그입니다. 같은 버그 간헐적 다시 표시하고 다양한 전복 (위 참조)에 고정되어있다 :
그것을 알아 냈다. 이것은 (예전하지만) PHP와 버그가 아닙니다 - 그것은 phpMyAdmin을 일부 버전의 버그입니다. 같은 버그 간헐적 다시 표시하고 다양한 전복 (위 참조)에 고정되어있다 :
#1312 - PROCEDURE [name] can't return a result set in the given context
이 동작은 phpMyAdmin을 내부에 저장 프로 시저 내에서 문을 선택으로 제한 나타납니다.
MySQL의 워크 벤치와 같은 클라이언트를 사용하여 문제를 해결 작동 (또는 당신은 phpMyAdmin을 업그레이드 할 수 있지만 내가 당신처럼 공유 서버에 있다면 그 고통이다).
어쨌든, 당신의 도움에 대한 모든 사람들에게 감사합니다.
-
==============================
2.이보고 된 버그가 있는지 확인하기 위해 당신의 PHP 버전을 확인합니다 (여기 참조).
이보고 된 버그가 있는지 확인하기 위해 당신의 PHP 버전을 확인합니다 (여기 참조).
이 게시물을 참조 : 주어진 상황에서 결과 집합을 반환 할 수 없습니다
-
==============================
3.이것은 아마도 PHP와 버그 거래 중심 및 저장 프로 시저 / 루틴 내에서 SELECT된다. 한 가지 가능한 해결책은 하나 개의 변수까지 결과를 가져올에 저장 프로 시저의 SELECT ... INTO의 내부를 사용하는 것입니다. 이것은 내가 읽어 다른 경우했다.
이것은 아마도 PHP와 버그 거래 중심 및 저장 프로 시저 / 루틴 내에서 SELECT된다. 한 가지 가능한 해결책은 하나 개의 변수까지 결과를 가져올에 저장 프로 시저의 SELECT ... INTO의 내부를 사용하는 것입니다. 이것은 내가 읽어 다른 경우했다.
SELECT * FROM category INTO c;
-
==============================
4.때 나는 다음을 실행합니다 :
때 나는 다음을 실행합니다 :
DELIMITER // DROP PROCEDURE IF EXISTS test_db.test_proc// CREATE PROCEDURE test_db.test_proc() SELECT 'foo'; // DELIMITER ;
다음에
CALL test_db.test_proc();
나는 나에게 같은 결과 집합을 보여줍니다
+-----+ | foo | +-----+ | foo | +-----+
나는 phpMyAdmin을 3.2.4과 PHP 5.3.1, MySQL은 5.1.41을 사용하고 있습니다.
아마 당신은 당신의 프로 시저 이름의 철자? 아니면 PHP 나 MySQL의 설치에 문제가 될 수 있을까? (아마도 버그가. 최신 버전으로 업데이트하려고 했습니까?)
from https://stackoverflow.com/questions/2360371/mysql-stored-procedures-not-working-with-select-basic-question by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 업데이트 트리거 후 ORACLE : ORA-04091 테이블 오류를 돌연변이 해결 (0) | 2020.05.17 |
---|---|
[SQL] 어떻게 BigQuery에 / SQL에서 데이터 다량의 열과 행을 바꾸어 하는가? (0) | 2020.05.17 |
[SQL] 대신 필터 테이블의 C # 목록을 기반으로 필터 SQL (0) | 2020.05.17 |
[SQL] 연결하여 그룹화 행 (0) | 2020.05.17 |
[SQL] 갭 임계 값보다 차이가 큰 테이블과 동일한 필터의 다른 레코드로부터 값을 취득하기위한 쿼리 (0) | 2020.05.17 |