簡體   English   中英

使用帶有out變量的sp會收到以下錯誤消息:錯誤代碼:1241。操作數應包含1列

[英]Using a sp with an out variable get the following error message: Error Code: 1241. Operand should contain 1 column(s)

我在MySql中編寫了一個存儲過程,其中包含一個out變量,但是當我要調用它時,出現以下錯誤。 有人可以幫我了解我在做什么錯嗎? 這是sp:

CREATE DEFINER=`root`@`localhost` PROCEDURE `storedp2`(out shift nvarchar(40))
begin
set shift= (SELECT * FROM myblog.computed);
end

這就是我所說的:

set @test='';
call storedp2 (@test) ;
select @test as t;

這是錯誤:

錯誤代碼:1241。操作數應包含1列

您需要返回單個值:

CREATE DEFINER=`root`@`localhost` PROCEDURE `storedp2`(out shift nvarchar(40))
begin
set shift= (SELECT col_name FROM myblog.computed WHERE id = ?);
-- (single column/single row)
-- set shift = (SELECT col_name FROM myblog.computed WHERE ... LIMIT 1);
end;

您不能將SELECT * FROM tab結果分配給NVARCHAR(40)

scalar :=  (col1, col2, col3)         -- won't work (multiple cols, single row)
scalar :=  (col1, col2), (col1, col2) -- won't work (multiple cols, multiple rows)
sclara :=  (col1), (col1)             -- won't work (single col, multiple rows)

編輯:

如果我想返回整個選擇的情感該怎么辦

CREATE DEFINER=`root`@`localhost` PROCEDURE `storedp2`()
begin
  -- some logic
  SELECT * FROM myblog.computed;
end

call storedp2 ();

DBFiddle演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM