В хранимой процедуре я могу добавить префикс имени таблицы к имени схемы.Например: выберите 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 ;