在下一个示例过程中,我可以将查询表中的行作为过程结果集输出,同时将单个字段或某些字段存储在变量中(与使用 SELECT INTO 时类似)吗?我能想到的唯一方法是重复查询。
CREATE PROCEDURE `Panel_TerminalesForm`(IN idTerminal INT)
BEGIN
declare somefield INT:
-- this select statement returns the found row as a resultset
SELECT terminales.*
FROM terminales
WHERE id_terminal = idTerminal;
-- but I also want to have here a table field inside the variable somefield
-- do some manipulation with somefield...
END;
最佳答案
如果我理解正确的话,您需要创建一个临时表,然后您可以按照您想要的方式操作临时表。
MySQL:
CREATE PROCEDURE `Panel_TerminalesForm`(IN idTerminal INT)
BEGIN
declare somefield INT
CREATE TEMPORARY TABLE SampleTempTable
SELECT * INTO SampleTempTable FROM terminales WHERE id_terminal = idTerminal;
-- output the resultset
SELECT * FROM SampleTempTable
-- read the variables you want
SELECT field INTO somefield FROM SampleTempTable
-- Drop the temp table
DROP TEMPORARY TABLE SampleTempTable
END;
http://www.mysqltutorial.org/mysql-temporary-table/
SQL Server:
CREATE PROCEDURE `Panel_TerminalesForm`(IN idTerminal INT)
BEGIN
declare somefield INT
SELECT terminales.*
INTO #tempSample FROM terminales
WHERE id_terminal = idTerminal;
SELECT * FROM #tempSample
-- Drop the temp table
DROP TABLE #tempSample
END;
注意:使用后删除临时表以避免错误。
关于mysql - 有什么方法可以同时存储 SELECT 结果并输出结果集吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33120111/