mysql存储过程输出很多列

时间:2016-12-29 12:17:43

标签: mysql stored-procedures

如何声明输出参数以返回数组或记录集?

如果我尝试只使用一列就可以了

enter code here
CREATE PROCEDURE `test`(
  IN invar VARCHAR(255),
  OUT outvar VARCHAR(255)
)
BEGIN
  SELECT col1 INTO outvar FROM my_table WHERE col1 = invar;
END;

但如果我试图获得许多专栏,我就不知道该怎么做

CREATE PROCEDURE `test`(
  IN invar VARCHAR(255),
  OUT outvar VARCHAR(255)
)
BEGIN
  SELECT col1,col2 INTO outvar FROM my_table WHERE col1 = invar;
END;

使用outvar VARCHAR(255)我理解我不能因为是STRING类型,但我需要使用哪种类型来声明outvar以使用多列

我需要得到一些像这样的" Column_name1" => "值" ," Column_name2" => "值2"用于PHP的$ output_result-> fetch()

2 个答案:

答案 0 :(得分:1)

您需要声明另一个变量并将col1和col2值存储在不同的变量中。试试这个:

CREATE PROCEDURE `test`(
  IN invar VARCHAR(255),
  OUT outvar1 VARCHAR(255),
  OUT outvar2 VARCHAR(255),
)
BEGIN
  SELECT col1,col2 INTO outvar1,outvar2 FROM my_table WHERE col1 = invar;
END;

这里col1值将在outvar1中,col2值将在outvar2

答案 1 :(得分:1)

你也可以试试concat。但后来在PHP代码中你需要爆炸。

CREATE PROCEDURE test(   IN invar VARCHAR(255),   OUT outvar VARCHAR(255) ) 开始   SELECT CONCAT(col1,“,”,col2)INTO outvar from my_table WHERE col1 = invar; END;