mysql怎么调用out参数的存储过程
5个回答
展开全部
CREATE PROCEDURE [CHARACTER]
@a varchar(20),@b varchar(20),@c varchar(20) output
AS
declare @d int
--begin
select @d=charindex(@a,@b,1)
print @d
if @d=1
begin
set @c='一样'
print @c
end
else
begin
set @c='不同'
print @c
end
GO
在查询分析器中:[CHARACTER] 'Hello','Hello Word!',''
@a varchar(20),@b varchar(20),@c varchar(20) output
AS
declare @d int
--begin
select @d=charindex(@a,@b,1)
print @d
if @d=1
begin
set @c='一样'
print @c
end
else
begin
set @c='不同'
print @c
end
GO
在查询分析器中:[CHARACTER] 'Hello','Hello Word!',''
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
MySQL教程4 MySQL8运算符、函数、存储过程及新增数据类型 17.之创建带有IN和OUT参数的存储过程 学习猿地
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
---- out
-- 传出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_out(OUT str VARCHAR(20))
BEGIN
SET str='这是传出参数';
END $
SET @a=''; -- 这句可以省略
CALL pro_out(@a); -- @后边是变量名
SELECT @a;
--- 其他存储过程
/*
存储过程 创建
定义完成,其他地方java等中可以调用
*/
USE student
-- 定义存储过程 (Stored Procs 中生成 方法名)
DELIMITER $ # 定义一个任意符号,一般是$
CREATE PROCEDURE pro_demo()
BEGIN
SELECT * FROM student;
END $ # 结束 引用符号
-- 删除存储过程 只用名字不要括号
DROP PROCEDURE pro_demo;
-- 调用
CALL pro_demo();
-- ---------------------------------
-- 传出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_out(OUT str VARCHAR(20))
BEGIN
SET str='这是传出参数';
END $
SET @a=''; -- 这句可以省略
CALL pro_out(@a); -- @后边是变量名
SELECT @a;
SHOW VARIABLES; -- 显示所有的内置变量
SELECT @@basedir; -- 查询单个内置变量
SET @str='list'; -- 定义局部/会话变量
SELECT @str; -- 读取局部变量
-- -------------------------------
-- 同时有传入和传出参数的存储过程
DELIMITER $
CREATE PROCEDURE pro_in_out(IN id INT,OUT str VARCHAR(20))
BEGIN # INTO 把查询结果sname,给后边的变量str赋值
SELECT sname INTO str FROM student WHERE sid=id;
END $
SET @aa=''; -- 这句可以省略
CALL pro_in_out(1,@aa);
SELECT @aa;
-- --------------------------------------
-- 带循环的存储过程
DELIMITER $
CREATE PROCEDURE pro_while(INOUT num INT)
BEGIN
DECLARE i INT DEFAULT 1; -- 声明并初始化变量i
DECLARE n INT DEFAULT 0; -- 声明并初始化变量n
WHILE i<=num DO -- 开始循环
SET n=n+i;
SET i=i+1; -- 不支持i++
END WHILE; -- 循环结束,没有缩进概念通过这里判断
SET num = n;
END $
-- drop procedure pro_while
SET @n=100;
CALL pro_while(@n);
SELECT @n;
-- ------------------------------
CREATE TABLE teacherlog( # 创建一个记录表teacherlog
tid INT PRIMARY KEY AUTO_INCREMENT,
tname VARCHAR(20));
-- 当teacher表中添加一条数据,则执行触发器,在teacherlog表中添加一条日志
CREATE TRIGGER tri_teacherAdd
AFTER INSERT ON teacher
FOR EACH ROW
INSERT INTO teacherlog (tname) VALUES('教师表插入了一行数据');
-- tname 是记录表中已经存在的列
DESC teacher;
INSERT INTO teacher (tname) VALUES('教');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
call sp_add();
是不是你定义的过程有问题吧,并没有指出返回结果来
像我这样是可以的:
CREATE PROCEDURE sp_add(a int, b int,out c int)
begin
set c=a+ b;
end;
调用过程:
call sp_add (1,2,@a);
select @a;
是不是你定义的过程有问题吧,并没有指出返回结果来
像我这样是可以的:
CREATE PROCEDURE sp_add(a int, b int,out c int)
begin
set c=a+ b;
end;
调用过程:
call sp_add (1,2,@a);
select @a;
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
用call就行了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询