반응형
이 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
반응형
'MySql' 카테고리의 다른 글
MySQL 데이터베이스의 단일 행에 여러 이미지 이름 삽입 (0) | 2020.11.26 |
---|---|
MySQL SQL 문의 동적 테이블 이름 (0) | 2020.11.26 |
MySQL Upload Multiple Files in PHP & INSERT path to MySQL (0) | 2020.11.26 |
MySQL Django : Table doesn't exist (0) | 2020.11.26 |
MySQL 판매가없는 달을 포함하여 지난 12 개월의 MySQL 월간 판매 (0) | 2020.11.26 |
댓글