>데이터 베이스 >MySQL 튜토리얼 >저장 프로시저의 동적으로 지정된 테이블에서 데이터를 검색하는 방법은 무엇입니까?

저장 프로시저의 동적으로 지정된 테이블에서 데이터를 검색하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-05 22:50:03944검색

How to Retrieve Data from Dynamically Specified Tables in Stored Procedures?

저장 프로시저 함수의 동적 테이블 이름

문제 설명:

목표는 다음과 같습니다. 테이블 이름이 매개변수로 동적으로 제공되는 테이블에서 값을 검색하는 저장 프로시저 함수를 만듭니다. 그러나 함수 내에서 SQL 문을 동적으로 생성하려고 시도하면 "동적 SQL은 허용되지 않습니다..." 오류가 발생합니다. 요구 사항은 이러한 제한을 극복하고 원하는 결과를 얻을 수 있는 방법을 찾는 것입니다.

해결책:

저장 프로시저 함수 내에서는 동적 SQL이 허용되지 않지만, 준비된 문을 활용하여 SQL 문을 동적으로 구성하고 실행할 수 있습니다. 불행하게도 준비된 문은 함수에서 직접 사용할 수 없습니다.

대체 접근 방식은 OUT 매개 변수를 사용하여 저장 프로시저를 생성하는 것입니다.

CREATE PROCEDURE getName (IN tableName VARCHAR(50), IN myId INT(11), OUT myName VARCHAR(50))
BEGIN

  SET @GetName = CONCAT('SELECT name INTO @var1 FROM ', tableName, ' WHERE>

이 프로시저는 입력 매개 변수 tableName 및 myId를 허용하며, myName OUT 매개변수를 검색된 값으로 설정합니다. 프로시저에서는 SQL 문을 동적으로 구성하고 실행을 위해 준비된 문을 사용합니다.

이 프로시저를 사용하려면 다음 단계를 따르세요.

SET @tableName = 'tbl';
SET @myId = 1005;
SET @name = NULL;
CALL getName(@tableName, @myId, @name);
SELECT @name;

이 솔루션을 사용하면 서로 다른 값을 동적으로 검색할 수 있습니다. 저장 프로시저 내의 테이블.

위 내용은 저장 프로시저의 동적으로 지정된 테이블에서 데이터를 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.