重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
下面是一个简单的 存储过程的例子.
为托克托等地区用户提供了全套网页设计制作服务,及托克托网站建设行业解决方案。主营业务为做网站、网站设计、托克托网站设计,以传统方式定制建设网站,并提供域名空间备案等一条龙服务,秉承以专业、用心的态度为用户提供真诚的服务。我们深信只要达到每一位用户的要求,就会得到认可,从而选择与我们长期合作。这样,我们也可以走得更远!
DECLARE v_index INT;
定义一个 名称为 v_index 的变量, 类型为 INT
MYSQL 变量定义应该只能在 存储过程, 函数里面定义.
不像 Oracle / SQL Server , 一个 BEGIN / END 里面就可以定义/执行了。
mysql DELIMITER //
mysql CREATE PROCEDURE TestWhile()
- BEGIN
- DECLARE v_index INT;
-
- SET v_index = 0;
-
- WHILE v_index 5 DO
- SET v_index = v_index + 1;
- SELECT v_index;
- END WHILE;
-
- END//
Query OK, 0 rows affected (0.00 sec)
采用set GLOBAL命令。如:set GLOBAL event_scheduler=1;
在Mysql的配置文件中对参数值进行修改,之后重启数据库服务即可。
1、存储子程序不能包含SQL预处理语句(PREPARE、EXECUTE、DEALLOCATE PREPARE)。隐含意义:不能在存储子程序中使用动态SQL语句(其中,能够以字符串形式构造动态语句,然后执行它们)。从MySQL 5.0.13开始,对于存储程序放宽了该限制,但该限制仍适用于存储函数和触发程序。
2、mssql下的存储过程写法:
create proc proc_ @col varchar(30)
as
begin
declare @sql varchar(100)
set @sql='select ' + @col +' from table_name'
exec(@sql)
end
exec proc_ 'col_name'
MySQL存储过程中,定义变量有两种方式:
1、使用set或select直接赋值,变量名以@开头,可以在一个会话(即连接)的任何地方声明,作用域是整个会话,称为用户变量。例如:set @var=1;
2、 以declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量,主要用在存储过程中,或者是给存储传参数中。例如: declare var1 int default 0;
两者的区别是:
在调用存储过程时,以declare声明的变量都会被初始化为null。而会话变量(即@开头的变量)则不会被再初始化,在一个会话(连接)内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。