본문 바로가기
MySql

MySQL에서 : 테이블 이름을 저장 프로 시저 및 / 또는 함수 인수로 전달하는 방법은 무엇입니까?

by 베이스 공부 2020. 11. 22.
반응형

예를 들어 다음은 작동하지 않습니다.

DELIMITER //
CREATE PROCEDURE countRows(tbl_name VARCHAR(40))
  BEGIN
    SELECT COUNT(*) as ct FROM tbl_name;
  END //

DELIMITER ;
CALL countRows('my_table_name');

생성 :

ERROR 1146 (42S02): Table 'test.tbl_name' doesn't exist

그러나 이것은 예상대로 작동합니다.

SELECT COUNT(*) as ct FROM my_table_name;

select 문에서 인수를 테이블 이름으로 사용하려면 어떤 구문이 필요합니까? 이것이 가능할까요?

 

해결 방법

 


CREATE  PROCEDURE `test1`(IN tab_name VARCHAR(40) )
BEGIN
 SET @t1 =CONCAT('SELECT * FROM ',tab_name );
 PREPARE stmt3 FROM @t1;
 EXECUTE stmt3;
 DEALLOCATE PREPARE stmt3;
END $$

 

참조 페이지 https://stackoverflow.com/questions/2977356

 

 

반응형

댓글