编写一个存储过程。现有数据表books(cBookID char(10),vBookName varchar(100),mSalePrice decimal, siQuantity smallint)。现在需要输入一个价格变量price,找到离该价格最接近的价格和对应书籍,将找到的价格赋值给price。存储过程声明如下:create procedure MYPROC(inout price decimal, out bookname varchar(100))
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 ; 用完了之后要把分隔符还原。