对于mysql过程,我是否需要指定INTO才能显示结果?

时间:2010-01-07 11:01:46

标签: mysql

我是否需要为我希望从程序中发送的每一列指定INTO参数?

如果我有以下内容:

SELECT col1, col2, col3, col4
FROM
table
WHERE
col1 = 'something'

我是否需要为每列指定INTO?

2 个答案:

答案 0 :(得分:0)

是的,参见示例

 BEGIN 

    SELECT password                      , 
           active_flg                    , 
           lastname                      , 
           firstname                     , 
           gender_code                   , 
           birth_dttm                    
    INTO   p_password                      , 
           p_active_flg                    , 
           p_lastname                      , 
           p_firstname                     , 
           p_gender_code                   , 
           p_birth_dttm                    
    FROM   students
    WHERE  student_id = p_student_id ; 

END 

从链接中获取: http://www.sqlinfo.net/mysql/mysql_stored_procedure_SELECT.php

答案 1 :(得分:0)

这取决于你想要达到的目标。

CREATE PROCEDURE testproc ()
BEGIN
SELECT col1, col2, col3, col4
FROM
table
WHERE
col1 = 'something'
END;

返回类似于SELECT表的结果,可以获得多行,返回。

CREATE PROCEDURE testproc (OUT col1 INT, OUT col2 VARCHAR(255), OUT col3 INT, OUT col4 INT)
BEGIN
SELECT col1, col2, col3, col4 INTO col1, col2, col3, col4
FROM
table
WHERE
col1 = 'something'
END;

只能返回1行,你可以这样调用它 CALL testproc(@ col1,@ col2,@ col3,@ col4); 虽然设置了变量,但这些变量可以在其他查​​询中使用或者只是一起调用 SELECT @ col1,@ col2,@ col3,@ col4; OR

从othertable中选择blah,其中col2 = @ col2;

您的存储过程还可以包含多个选项,它在内部使用这些变量来输入新的选择,使用IF THEN等等。