存储过程之变量

1.变量的类型    
      -- 1.用户变量,和MySql客户端绑定的,只对当前客户端生效  以”@”开始,形式为”@变量名。”
            SET @param = '123';
            SELECT @param AS param数据库

        -- 2.全局变量  定义时,以以下两种形式出现,set GLOBAL 变量名 或者 set @@global.变量名。show global variables; 
        -- 对全部客户端生效。只有具备super权限才能够设置全局变量。安全

        -- 3.会话变量:只对链接的客户端有效。一旦客户端失去链接,变量失效。show session variables;
             SHOW SESSION VARIABLES服务器

        -- 4.局部变量:做用范围在begin到end语句块之间。在该语句块里设置的变量declare语句专门用于定义局部变量。
             -- 如: DECLARE l_numeric number(8,2) DEFAULT 9.95;网络

            全局变量和会话变量的区别:全局变量在MySQL启动的时候由服务器自动将它们初始化为默认值,
            这些默认值能够经过更改my.ini这个文件来更改。会话变量在每次创建一个新的链接的时候,由MYSQL来初始化。
            MYSQL会将当前全部全局变量的值复制一份。来作为会话变量。全局变量与会话变量的区别就在于,
            对全局变量的修改会影响到整个服务器,可是对会话变量的修改,只会影响到当前的会话(也就是当前的数据库链接)。
            非root用户在修改全局变量时会报没有权限,在修改会话变量时也须要注意,有些变量是不能修改的,只能由root用户进行修改,
            例如:event_scheduler。session

2、存储过程的优势
            1.存储过程加强了SQL语言的功能和灵活性。存储过程能够用流控制语句编写,有很强的灵活性,能够完成复杂的判断和较复杂的运算。
            2.当SQL语句有变更时,能够只修改数据库中的存储过程而没必要修改代码。
            3.存储过程能实现较快的执行速度。若是某一操做包含大量的SQL代码或分别被屡次执行,那么存储过程要比批处理的执行速度快不少。
        由于存储过程是预编译的。在首次运行一个存储过程时查询,优化器对其进行分析优化,而且给出最终被存储在系统表中的执行计划。
        而批处理的SQL语句在每次运行时都要进行编译和优化,速度相对要慢一些。
            4.减小网络传输。在客户端调用一个存储过程固然比执行一串SQL传输的数据量要小。
            5.存储过程可被做为一种安全机制来充分利用。系统管理员经过执行某一存储过程的权限进行限制,可以实现对相应的数据的访问权限的限制,
              避免了非受权用户对数据的访问,保证了数据的安全。优化

3、存储过程的参数
                MySQL存储过程的参数用在存储过程的定义,共有三种参数类型,IN,OUT,INOUT,形式如: 
                CREATE PROCEDURE([[IN |OUT |INOUT ] 参数名 数据类型…]) 
                IN    输入参数:表示该参数的值必须在调用存储过程时指定,在存储过程当中修改该参数的值不能被返回,为默认值 
                OUT   输出参数:该值可在存储过程内部被改变,并可返回 
                INOUT 输入输出参数:调用时指定,而且可被改变和返回
 .net

相关文章
相关标签/搜索