Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

매개변수를 가져오고 저장 프로시저 내에서 생성된 새 테이블에 대해 LIKE에서 사용하는 동적 SQL

<시간/>

이를 위해 준비된 문을 사용하십시오. 먼저 테이블을 생성하겠습니다 -

mysql> create table DemoTable1973
   (
   StudentId int,
   StudentName varchar(20)
   );
Query OK, 0 rows affected (0.00 sec)

삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -

mysql> insert into DemoTable1973 values(101,'Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1973 values(102,'John Doe');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1973 values(103,'David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1973 values(104,'John Smith');
Query OK, 1 row affected (0.00 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select * from DemoTable1973;

이것은 다음과 같은 출력을 생성합니다 -

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       101 | Chris       |
|       102 | John Doe    |
|       103 | David       |
|       104 | John Smith  |
+-----------+-------------+
4 rows in set (0.00 sec)

다음은 프로시저 호출에서 값을 갖는 LIKE 절을 사용하여 저장 프로시저 및 새 테이블을 생성하는 쿼리입니다 -

mysql> DELIMITER //
mysql> create PROCEDURE demo_create(IN newTableName varchar(20),IN tbl varchar(20))
   BEGIN
      DROP TABLE IF EXISTS newTableName;
      SET @query= CONCAT('CREATE TABLE newTableName as SELECT * from DemoTable1973 WHERE StudentName like ''%',tbl,'%''');
      PREPARE ps FROM @query;
      EXECUTE ps;
    END
   //
Query OK, 0 rows affected (0.00 sec)
mysql> DELIMITER ;

호출 명령을 사용하여 저장 프로시저 호출 -

mysql> call demo_create('newTableName','John');
Query OK, 2 rows affected (0.00 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select * from newTableName;

이것은 다음과 같은 출력을 생성합니다 -

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|       102 | John Doe    |
|       104 | John Smith  |
+-----------+-------------+
2 rows in set (0.00 sec)