MySql编写一个存储过程?

MySql编写一个存储过程?,第1张

1、delimiter // ,声明分隔符:DELIMITER是分割符的意思,因为MySQL默认以""为分隔符,如果我们没有声明分割符,那么编译器会把存储过程当成SQL语句进行处理,则存储过程的编译过程会报错,所以要事先用DELIMITER关键字申明当前段分隔符,这样MySQL才会将""当做存储过程中的代码,不会执行这些代码(这里如果不懂的话,你可以通过试错的方法来理解)。2、编写存储过程的格式:CREATE PROCEDURE([[IN |OUT |INOUT ]参数名数据类形...])例子:1)create procedure proc1(out s int) // 只有输出2)create procedure proc2(in p_in bigint) // 只有输入3)create procedure proc15() // 没有输入与输出4)create procedure demo_multi_param(in id bigint,in name varchar(32),out c int) //多输入与输出3、过程体的开始与结束使用BEGIN与END进行标识。4、select count (*) into s from student// 过程体,一系列的逻辑语句,sql语句5、delimiter 用完了之后要把分隔符还原。

创建存储过程

mysql>delimiter $ -- delimiter $是设置 $为命令终止符号,代替默认的分号,因为分号有其他用处.

mysql>create procedure sp_test(IN pi_id int, OUT po_name varchar(10))

->begin

->select * from test.tb_test

->select tb_test.name into po_name from test.tb_test where tb_test.id = pi_id

->end

->$

Query OK, 0 rows affected (0.00 sec)

mysql>delimiter -- 恢复分号作为分隔终止符号

5.调用存储过程

mysql>set@po_name=''

Query OK, 0 rows affected (0.00 sec)

mysql>call sp_test(1,@po_name)

使用MySQL编程和SQL Server基本思想是一致的,语法有较大的区别。SQL Server不管是条件、循环等区块仍然要使用begin与end作为起始和结束的标识,而MySQL则直接用END something(如while,if,loop),当然,由于自己接触MySQL并不长,没有使用SQL Server那么熟练,所以写这些也是非常基础的部分,而在实际问题中会千变万化,所以还是需要更多的实践来不断提高。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7232025.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-03
下一篇 2023-04-03

发表评论

登录后才能评论

评论列表(0条)

保存