gpt4 book ai didi

mysql - 输出参数可以按名称绑定(bind),而不是按排序?

转载 作者:行者123 更新时间:2023-11-29 13:09:01 25 4
gpt4 key购买 nike

在下面的代码中,“out b char(8)”只能绑定(bind)到“@bz:=cName,@cz:=cSex”的排序,我可以通过名称绑定(bind)它吗(b)?

delimiter $$ 
drop procedure if exists test_out1 $$

create procedure test_out1(in a CHAR(1), out b char(8),out c char(1) )
begin
select @bz:=cName,@cz:=cSex from students where cID=a;
end $$
delimiter ;

call test_out1('2',@bx,@cx);
SELECT @bx,@cx

----------------------------------------V2

when I use 
create procedure test_out2(in a CHAR(1), out b char(8),out c char(50) )
begin
select cName into b from students where cID=a;
end $$
delimiter ;

-->没问题但当我使用时:

create procedure test_out2(in a CHAR(1), out b char(8),out c char(50) )
begin
select cName into b,cSex to c from students where cID=a;
end $$

-->错误,您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在 ') 附近使用的正确语法

最佳答案

您已在过程定义中定义了 OUT 参数(bc)。
您不需要将结果显式定义给其他变量,但需要定义参数。

更改:

begin
select @bz:=cName,@cz:=cSex from students where cID=a;
end $$

至:

begin
select cName, cSex into b, c from students where cID=a;
end $$

当你执行时:

call test_out1( '2', @bx, @cx );
SELECT @bx, @cx ;

过程中生成的列值将分配给 @bx@cx session 变量。

示例:

delimiter //

CREATE PROCEDURE simpleproc (OUT dt date, OUT ts datetime)
BEGIN
SELECT current_date, now() INTO dt, ts;
END//
delimiter ;

现在,调用它进行测试:

CALL simpleproc( @dt, @ts );
select @dt, @ts;
+------------+---------------------+
| @dt | @ts |
+------------+---------------------+
| 2014-03-13 | 2014-03-13 11:19:03 |
+------------+---------------------+

引用:

关于mysql - 输出参数可以按名称绑定(bind),而不是按排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22339750/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com