반응형
MySQL 저장 프로 시저에서 동적 SQL을 사용하는 방법
MySQL 저장 프로 시저에서 동적 SQL을 어떻게 구축하고 사용합니까?
MySQL이 동적 SQL을 지원한다고 생각하지 않습니다. 유사하지만 다른 "준비된"진술을 할 수 있습니다.
다음은 예입니다.
mysql> PREPARE stmt FROM
-> 'select count(*)
-> from information_schema.schemata
-> where schema_name = ? or schema_name = ?'
;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE stmt
-> USING @schema1,@schema2
+----------+
| count(*) |
+----------+
| 2 |
+----------+
1 row in set (0.00 sec)
mysql> DEALLOCATE PREPARE stmt;
준비된 문은 종종 주어진 쿼리에 대한 실행 계획을 보는 데 사용됩니다. 이들이으로 실행되기 때문에 실행 명령 및 SQL이 변수에 할당 될 수는 동적 SQL과 같은 행동의 일부를 근사화 할 수있다.
이에 대한 좋은 링크 는 다음과 같습니다 .
stmt
마지막 줄을 사용하여 할당을 해제하는 것을 잊지 마십시오 !
행운을 빕니다!
5.0.13 이후 저장 프로 시저에서 동적 SQL을 사용할 수 있습니다.
delimiter //
CREATE PROCEDURE dynamic(IN tbl CHAR(64), IN col CHAR(64))
BEGIN
SET @s = CONCAT('SELECT ',col,' FROM ',tbl );
PREPARE stmt FROM @s;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
END
//
delimiter ;
동적 SQL은 함수 또는 트리거에서 작동하지 않습니다. 더 많은 용도 는 MySQL 문서 를 참조하십시오 .
사용자 정의 변수를 사용하여 동적 문 외부를 통과 할 수 있습니다.
Server version: 5.6.25-log MySQL Community Server (GPL)
mysql> PREPARE stmt FROM 'select "AAAA" into @a';
Query OK, 0 rows affected (0.01 sec)
Statement prepared
mysql> EXECUTE stmt;
Query OK, 1 row affected (0.01 sec)
DEALLOCATE prepare stmt;
Query OK, 0 rows affected (0.01 sec)
mysql> select @a;
+------+
| @a |
+------+
|AAAA |
+------+
1 row in set (0.01 sec)
참고 URL : https://stackoverflow.com/questions/190776/how-to-have-dynamic-sql-in-mysql-stored-procedure
반응형
'program story' 카테고리의 다른 글
Spring Boot : SpringBootServletInitializer는 더 이상 사용되지 않습니다. (0) | 2020.12.03 |
---|---|
Angular 방식으로 Angular2 경로에서 매개 변수를 얻는 방법은 무엇입니까? (0) | 2020.12.03 |
경로에서 각 폴더 이름을 어떻게 추출합니까? (0) | 2020.12.03 |
브라우저에서 VML 또는 SVG에 대한 지원을 어떻게 감지합니까? (0) | 2020.12.03 |
PHP 또는 JavaScript를 사용하지 않고 내용에 맞게 텍스트 영역을 확장하는 방법이 있습니까? (0) | 2020.12.03 |