2010-01-07 14 views
0

我是否需要爲要發送到過程的每個列指定參數INTO對於mysql程序,我是否需要指定INTO來顯示結果?

如果我有以下幾點:

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

我需要指定INTO爲每列?

+2

你嘗試了嗎? – 2010-01-07 11:08:48

+0

是的,它適用於INTO關鍵字以及沒有,因此我的問題。 – jim 2010-01-07 11:16:42

回答

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

+0

謝謝先生..這就是我需要知道的.. :)我不清楚INTO是否只在計算或其他操作需要時才使用,但我可以看到INTO總是被使用。 – jim 2010-01-07 11:13:33

+0

還有一個問題..我需要指定OUT嗎? – jim 2010-01-07 11:14:49

+0

感謝您的鏈接,它也回答我的最後一個問題。乾杯。 – jim 2010-01-07 11:18:11

0

這取決於你想要達到的目的。

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

返回的結果類似於SELECTing一個表,你可以得到多行,返回。

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; 或

從othertable中選擇blah where col2 = @ col2;

你的存儲過程,也可以包含多個選擇的地方使用這些變量對內部投入新的選擇,與IF THENs等,等

相關問題