본문 바로가기
MySql

MySQL mysql sproc에서 테이블 이름에 변수 사용

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

이 sproc을 사용하여 다른 테이블을 선택하기 위해 mysql 저장 프로 시저에 테이블 이름을 전달하려고하는데 작동하지 않습니다.

이것이 내가 시도하는 것입니다.

CREATE PROCEDURE `usp_SelectFromTables`(
 IN TableName varchar(100)
)
BEGIN
        SELECT * FROM @TableName;
END

나는 또한 @ 기호없이 그것을 시도했으며 TableName이 존재하지 않는다는 것을 알려줍니다 ... 내가 알고있는 :)

 

해결 방법

 

DBMS에 따라 다르지만 표기법에는 일반적으로 Dynamic SQL이 필요하며 함수의 반환 값이 실행될 때 입력에 의존한다는 문제가 발생합니다. 이것은 시스템 conniptions를 제공합니다. 일반적으로 (따라서 예외가있을 수 있음) DBMS에서는 테이블 이름이나 열 이름과 같은 쿼리의 구조적 요소에 자리 표시 자 (매개 변수)를 사용할 수 없습니다. 열 값과 같은 값만 지정할 수 있습니다.

일부 DBMS에는 SQL 문자열을 빌드 한 다음 '준비'또는 '즉시 실행'또는 유사한 작업을 사용하여 작업 할 수있는 저장 프로 시저 지원이 있습니다. 그러나 갑자기 SQL 주입 공격에 취약하다는 점에 유의하십시오. 그러면 프로 시저를 실행할 수있는 사람이 SQL이 실행되는 것을 부분적으로 제어 할 수 있습니다.

 

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

 

 

반응형

댓글