[SQL] 내 SQL 동적 실행하고 저장 프로 시저에서 변수에 출력을 얻을 쿼리
SQL내 SQL 동적 실행하고 저장 프로 시저에서 변수에 출력을 얻을 쿼리
나는 내 SQL 저장 프로 시저에서 동적 쿼리를 생성합니다. 나는 밖으로 매개 변수로이 쿼리의 결과를 얻을 싶어요. 이걸 어떻게 할까?
CREATE PROCEDURE 'searchInvoice'
(
OUT numOfRecords INT
)
BEGIN
DECLARE query1 TEXT;
DECLARE query2 TEXT;
SET query1 = 'SELECT COUNT(*) bla bla bla.....';
// Query1 to select the count of matching tuples..
SET query2 = 'SELECT * from bla bla bla....';
// Query2 to select original records...
// later part of this both queries generate dynamically according to some IN parameters..
// now I wanna assign the output of the query1 into numOfRecords
// and I wanna execute the query2 as well.. like this
SET @Sql = query2;
PREPARE STMT FROM @Sql;
EXECUTE STMT;
DEALLOCATE PREPARE STMT;
// output of the query2 can be read in PHP
END
어떻게 OUT 매개 변수 (numOfRecords)에 쿼리 2의 출력을 얻을 수 ??
해결법
-
==============================
1.이 예에서보세요 -
이 예에서보세요 -
CREATE TABLE table1( column1 VARCHAR(255) DEFAULT NULL, column2 VARCHAR(255) DEFAULT NULL, column3 VARCHAR(255) DEFAULT NULL ); INSERT INTO table1 VALUES ('1', 'value1', 'value2'), ('2', 'value3', 'value4'); DELIMITER $$ CREATE PROCEDURE procedure1(IN Param1 VARCHAR(255), OUT Param2 VARCHAR(255), OUT Param3 VARCHAR(255)) BEGIN SET @c2 = ''; SET @c3 = ''; SET @query = 'SELECT column2, column3 INTO @c2, @c3 FROM table1 WHERE column1 = ?'; PREPARE stmt FROM @query; SET @c1 = Param1; EXECUTE stmt USING @c1; DEALLOCATE PREPARE stmt; SET Param2 = @c2; SET Param3 = @c3; END$$ DELIMITER ; -- Call procedure and use variables SET @Param1 = 2; SET @Param2 = ''; SET @Param3 = ''; CALL procedure1(@Param1, @Param2, @Param3); SELECT @Param2, @Param3; +---------+---------+ | @Param2 | @Param3 | +---------+---------+ | value3 | value4 | +---------+---------+
-
==============================
2.
select count(*) into @numOfRecords from ....
당신은 저장 프로 시저 내에서 변수를 선언 할 수있다
제가 질문을 이해했습니다 바랍니다.
from https://stackoverflow.com/questions/5591338/my-sql-dynamic-query-execute-and-get-ouput-into-a-variable-in-stored-procedure by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 횟수에 따라 ELSE 문은 다른 삽입 문을 실행할 경우 사용 (0) | 2020.05.24 |
---|---|
[SQL] 엑셀 VBA : MySQL의 데이터베이스에 쓰기 (0) | 2020.05.24 |
[SQL] MySQL의 날짜 필드 만 월과 일 비교 (0) | 2020.05.23 |
[SQL] 는 SQL select 문의 다른 부분의 실행 순서는 무엇입니까? (0) | 2020.05.23 |
[SQL] 어떻게 SQL에서 같은 ID로 여러 행을 연결하는? (0) | 2020.05.23 |