Использование схемы в качестве переменной в хранимой процедуре - PullRequest
0 голосов
/ 28 ноября 2018

В хранимой процедуре я могу добавить префикс имени таблицы к имени схемы.Например: выберите CustomerName из SchemaName.CustomerTable

Но я хотел бы использовать переменную для имени схемы.

У меня есть SP, который возвращает имя схемы с помощью функции и назначаетэто к переменной.@ RetVal

Затем я хочу использовать эту переменную в качестве префикса к имени таблицы.Вот что я попробовал.

enter code here

CREATE DEFINER=`root`@`localhost` PROCEDURE `CustInfo`(Custcode varchar(255))
BEGIN


-- The following returns the schema name I want to use and stored in @RetVal
set @RetVal =  GetCustDB(Custcode);

SELECT 
strServerDB AS CustMySqlDB,
strCustName AS CustomerName,
strDemoUser AS DemoUser
FROM
@RetVal.tbl_200_010_CustomerInfo
WHERE
@RetVal.tbl_200_010_CustomerInfo.bolEnabled = 1 ;

РЕШЕНИЕ НАЙДЕНО:

DELIMITER $$

CREATE DEFINER='root'@'localhost' PROCEDURE CustInfo (Custcode varchar(255))
BEGIN

-- The following returns the schema name I want to use and stored in @RetVal
set @RetVal =  GetCustDB(Custcode);

SET @s = CONCAT("SELECT strServerDB AS CustMySqlDB, strCustName AS     
CustomerName, strDemoUser AS DemoUser FROM ", @RetVal,     
".tbl_200_010_CustomerInfo WHERE ", @RetVal,         
".tbl_200_010_CustomerInfo.bolEnabled = 1 ;");
PREPARE stmt1 FROM @s;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
END $$

DELIMITER ;
...