[SQL] 저장 프로 시저 / 함수는 테이블을 반환 할 수 있나요?
SQL저장 프로 시저 / 함수는 테이블을 반환 할 수 있나요?
MySQL의 저장 프로 시저 / 함수는 임시 테이블을 사용하지 않고 테이블을 반환 할 수 있습니까?
다음 절차를 만들기
CREATE PROCEDURE database.getExamples()
SELECT * FROM examples;
나중에 그것을 호출
CALL database.getExamples()
표시 예를 들어 테이블 - 그냥 예상 - 그러나 다음은 가능하지 않는 것 :
SELECT * FROM CALL database.getExamples()
방법 - 그것은 전혀 저장 프로 시저 / 함수에서 쿼리 결과 테이블을 반환하고, 그래서 만약 할 수 있습니까?
해결법
-
==============================
1.지금,이 수 없습니다.
지금,이 수 없습니다.
다음은 FROM 절에 사용할 수 있습니다 무엇에 대한 설명서입니다 :
table_references: table_reference [, table_reference] ... table_reference: table_factor | join_table table_factor: tbl_name [[AS] alias] [index_hint)] | table_subquery [AS] alias | ( table_references ) | { OJ table_reference LEFT OUTER JOIN table_reference ON conditional_expr } join_table: table_reference [INNER | CROSS] JOIN table_factor [join_condition] | table_reference STRAIGHT_JOIN table_factor | table_reference STRAIGHT_JOIN table_factor ON conditional_expr | table_reference {LEFT|RIGHT} [OUTER] JOIN table_reference join_condition | table_reference NATURAL [{LEFT|RIGHT} [OUTER]] JOIN table_factor join_condition: ON conditional_expr | USING (column_list) index_hint: USE {INDEX|KEY} [FOR JOIN] (index_list) | IGNORE {INDEX|KEY} [FOR JOIN] (index_list) | FORCE {INDEX|KEY} [FOR JOIN] (index_list) index_list: index_name [, index_name] ...
당신이 볼 수 있듯이, 저장 프로 시저는이 목록에 없습니다.
-
==============================
2.저장 프로 시저 및 함수 : A.4 MySQL의 5.6 FAQ에 따르면 :
저장 프로 시저 및 함수 : A.4 MySQL의 5.6 FAQ에 따르면 :
-
==============================
3.그것은 그것을 할 수있는 것처럼 보이지만, 저장 프로 시저에서 출력 변수의 사용과. http://www.sqlinfo.net/mysql/mysql_stored_procedure_SELECT.php
그것은 그것을 할 수있는 것처럼 보이지만, 저장 프로 시저에서 출력 변수의 사용과. http://www.sqlinfo.net/mysql/mysql_stored_procedure_SELECT.php
-- 1. Create Procedure DROP PROCEDURE IF EXISTS `sp_students_SELECT_byPK` GO CREATE PROCEDURE sp_students_SELECT_byPK ( IN p_student_id INT(11) , OUT p_password VARCHAR(15) , OUT p_active_flg TINYINT(4) , OUT p_lastname VARCHAR(30) , OUT p_firstname VARCHAR(20) , OUT p_gender_code VARCHAR(1) , OUT p_birth_dttm DATETIME ) BEGIN SELECT password , active_flg , lastname , firstname , gender_code , birth_dttm INTO p_password , p_active_flg , p_lastname , p_firstname , p_gender_code , p_birth_dttm FROM students WHERE student_id = p_student_id ; END GO -- 2. Select Results from Stored Procedure /*** IN p_student_id INT(11) OUT p_password VARCHAR(15) OUT p_active_flg TINYINT(4) OUT p_lastname VARCHAR(30) OUT p_firstname VARCHAR(20) OUT p_gender_code VARCHAR(1) OUT p_birth_dttm DATETIME ***/ CALL sp_students_SELECT_byPK ( 8, @p_password , @p_active_flg , @p_lastname , @p_firstname , @p_gender_code , @p_birth_dttm ) GO SELECT @p_password AS p_password , @p_active_flg AS p_active_flg , @p_lastname AS p_lastname , @p_firstname AS p_firstname , @p_gender_code AS p_gender_code , @p_birth_dttm AS p_birth_dttm GO
-
==============================
4.당신은보기 대신 저장 프로 시저를 사용하여 당신이하려고하는 일을 할 수 있습니다,하지만 완전히 저장 프로 시저가 무엇을하는지에 따라 달라집니다.
당신은보기 대신 저장 프로 시저를 사용하여 당신이하려고하는 일을 할 수 있습니다,하지만 완전히 저장 프로 시저가 무엇을하는지에 따라 달라집니다.
임시 테이블을 사용하는 것이 유일한 옵션 인 경우, MEMORY 스토리지 엔진을 사용하는 것이 좋습니다.
-
==============================
5.테이블에 삽입하지 않거나 변수가 결과 세트를 생성합니다 각 SELECT 문.
테이블에 삽입하지 않거나 변수가 결과 세트를 생성합니다 각 SELECT 문.
당신이 당신의 저장 프로 시저가 하나의 결과 집합을 반환 할 경우, 당신이 하나의 SELECT 문이 확인하십시오. 다른 SELECT 문이있는 경우, 그들은 그 테이블이나 변수에 결과를 삽입해야합니다.
최신 정보 여기서 프로 시저의 예이다.
이 저장 프로시 저는 하나 개의 결과 집합을 반환합니다 :
DELIMITER ;; CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name() BEGIN DECLARE local_variable_name INT; SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name; SELECT * FROM table_1; END;; DELIMITER ; This stored procedure would return two result sets: DELIMITER ;; CREATE DEFINER=CURRENT_USER PROCEDURE stored_procedure_name() BEGIN DECLARE local_variable_name INT; SELECT column_name FROM table_1 LIMIT 1 INTO local_variable_name; SELECT * FROM table_1; SELECT * FROM table_2; END;; DELIMITER ;
참고 : HTTPS : //dba.stackexchange.com/questions/8291/how-does-mysql-return-a-result-set-from-a-stored-procedure
from https://stackoverflow.com/questions/1637288/can-a-stored-procedure-function-return-a-table by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 오라클 대에는 차이가 존재? (0) | 2020.05.22 |
---|---|
[SQL] 어떻게 각 그룹의 첫 번째 N 행을 선택하려면? (0) | 2020.05.22 |
[SQL] 그것은 다른 아이에 의해 참조되어 있지 않은 경우 삭제 부모 (0) | 2020.05.22 |
[SQL] 공간을 무시 쿼리 (0) | 2020.05.22 |
[SQL] 오라클 SQL의 맞춤 주문 (0) | 2020.05.22 |