精华内容
下载资源
问答
  • MySQL存储过程的控制语句 变量作用域 内部变量在其作用域范围内享有更高的优先权,当执行到end时,内部变量消失,不再可见了,在存储 过程外再也找不到这个内部变量,但是可以通过out参数或者将其值指派给会话变量...

    COMMENT 'string'是注释信息。

    实例:

    #将读写权限改为MODIFIES SQL DATA,并指明调用者可以执行。

    ALTER PROCEDURE num_from_employee

    MODIFIES SQL DATA

    SQL SECURITY INVOKER ;

    #将读写权限改为READS SQL DATA,并加上注释信息'FIND NAME'。

    ALTER PROCEDURE name_from_employee

    READS SQL DATA

    COMMENT 'FIND NAME' ;

    MySQL存储过程的删除

    DROP PROCEDURE [过程1[,过程2…]]

    从MySQL的表格中删除一个或多个存储过程。

    MySQL存储过程的控制语句

    变量作用域

    内部变量在其作用域范围内享有更高的优先权,当执行到end时,内部变量消失,不再可见了,在存储

    过程外再也找不到这个内部变量,但是可以通过out参数或者将其值指派给会话变量来保存其值。

    #变量作用域

    DELIMITER //

    CREATE PROCEDURE proc()

    BEGIN

    DECLARE x1 VARCHAR(5) DEFAULT 'outer';

    BEGIN

    DECLARE x1 VARCHAR(5) DEFAULT 'inner';

    SELECT x1;

    END;

    SELECT x1;

    END;

    //

    DELIMITER ;

    #调用

    CALL proc();

    执行结果:

    6db13ae58b939cf271051c5be1fc2bd8.png

    d0cc2401d451926cd57fbef3430d06a8.png

    条件语句

    IF-THEN-ELSE语句

    #条件语句IF-THEN-ELSE

    DROP PROCEDURE IF EXISTS proc3;

    DELIMITER //

    CREATE PROCEDURE proc3(IN parameter int)

    BEGIN

    DECLARE var int;

    SET var=parameter+1;

    IF var=0 THEN

    INSERT INTO t VALUES (17);

    END IF ;

    IF parameter=0 THEN

    UPDATE t SET s1=s1+1;

    ELSE

    UPDATE t SET s1=s1+2;

    END IF ;

    END ;

    //

    DELIMITER ;

    CASE-WHEN-THEN-ELSE语句

    #CASE-WHEN-THEN-ELSE语句

    DELIMITER //

    CREATE PROCEDURE proc4 (IN parameter INT)

    BEGIN

    DECLARE var INT;

    SET var=parameter+1;

    CASE var

    WHEN 0 THEN

    INSERT INTO t VALUES (17);

    WHEN 1 THEN

    INSERT INTO t VALUES (18);

    ELSE

    INSERT INTO t VALUES (19);

    END CASE ;

    END ;

    //

    DELIMITER ;

    循环语句

    WHILE-DO…END-WHILEDELIMITER //

    CREATE PROCEDURE proc5()

    BEGIN

    DECLARE var INT;

    SET var=0;

    WHILE var<6 DO

    INSERT INTO t VALUES (var);

    SET var=var+1;

    END WHILE ;

    END;

    //

    DELIMITER ;

    REPEAT...END REPEAT

    此语句的特点是执行操作后检查结果DELIMITER //

    CREATE PROCEDURE proc6 ()

    BEGIN

    DECLARE v INT;

    SET v=0;

    REPEAT

    INSERT INTO t VALUES(v);

    SET v=v+1;

    UNTIL v>=5

    END REPEAT;

    END;

    //

    DELIMITER ;

    LOOP...END LOOPDELIMITER //

    CREATE PROCEDURE proc7 ()

    BEGIN

    DECLARE v INT;

    SET v=0;

    LOOP_LABLE:LOOP

    INSERT INTO t VALUES(v);

    SET v=v+1;

    IF v >=5 THEN

    LEAVE LOOP_LABLE;

    END IF;

    END LOOP;

    END;

    //

    DELIMITER ;

    LABLES标号

    标号可以用在begin repeat while 或者loop 语句前,语句标号只能在合法的语句前面使用。可以跳出循环,使运行指令达到复合语句的最后一步。

    ITERATE迭代

    通过引用复合语句的标号,来从新开始复合语句

    #ITERATE

    DELIMITER //

    CREATE PROCEDURE proc8()

    BEGIN

    DECLARE v INT;

    SET v=0;

    LOOP_LABLE:LOOP

    IF v=3 THEN

    SET v=v+1;

    ITERATE LOOP_LABLE;

    END IF;

    INSERT INTO t VALUES(v);

    SET v=v+1;

    IF v>=5 THEN

    LEAVE LOOP_LABLE;

    END IF;

    END LOOP;

    END;

    //

    DELIMITER ;

    MySQL存储过程的基本函数

    字符串类

    CHARSET(str) //返回字串字符集

    CONCAT (string2 [,... ]) //连接字串

    INSTR (string ,substring ) //返回substring首次在string中出现的位置,不存在返回0

    LCASE (string2 ) //转换成小写

    LEFT (string2 ,length ) //从string2中的左边起取length个字符

    LENGTH (string ) //string长度

    LOAD_FILE (file_name ) //从文件读取内容

    LOCATE (substring , string [,start_position ] ) 同INSTR,但可指定开始位置

    LPAD (string2 ,length ,pad ) //重复用pad加在string开头,直到字串长度为length

    LTRIM (string2 ) //去除前端空格

    REPEAT (string2 ,count ) //重复count次

    REPLACE (str ,search_str ,replace_str ) //在str中用replace_str替换search_str

    RPAD (string2 ,length ,pad) //在str后用pad补充,直到长度为length

    RTRIM (string2 ) //去除后端空格

    STRCMP (string1 ,string2 ) //逐字符比较两字串大小,

    SUBSTRING (str , position [,length ]) //从str的position开始,取length个字符,

    注:mysql中处理字符串时,默认第一个字符下标为1,即参数position必须大于等于1

    SELECT SUBSTRING('abcd',0,2);

    结果:

    6fc1e12d2377886bdc540830cd0dd3ae.png

    SELECT SUBSTRING('abcd',1,2);

    结果:

    21f954a18326a6629cd71cf6a4b16950.png

    TRIM([[BOTH|LEADING|TRAILING] [padding] FROM]string2) //去除指定位置的指定字符

    UCASE (string2 ) //转换成大写

    RIGHT(string2,length) //取string2最后length个字符

    SPACE(count) //生成count个空格

    数学类

    ABS (number2 ) //绝对值

    BIN (decimal_number ) //十进制转二进制

    CEILING (number2 ) //向上取整

    CONV(number2,from_base,to_base) //进制转换

    FLOOR (number2 ) //向下取整

    FORMAT (number,decimal_places ) //保留小数位数

    HEX (DecimalNumber ) //转十六进制

    注:HEX()中可传入字符串,则返回其ASC-11码,如HEX('DEF')返回4142143

    也可以传入十进制整数,返回其十六进制编码,如HEX(25)返回19

    LEAST (number , number2 [,..]) //求最小值

    MOD (numerator ,denominator ) //求余

    POWER (number ,power ) //求指数

    RAND([seed]) //随机数

    ROUND (number [,decimals ]) //四舍五入,decimals为小数位数] 注:返回类型并非均为整数,如:

    #默认变为整型值

    SELECT ROUND(1.23);

    81a2c42c049eeaedd95b7042caacb958.png

    SELECT ROUND(1.56);

    f02383d08ee1d1a00bbf705b1bcbbb10.png

    #设定小数位数,返回浮点型数据

    SELECT ROUND(1.567,2);

    2b876c8c516dcbb7c84fa6aff6175d2d.png

    SIGN (number2 ) // 正数返回1,负数返回-1

    日期时间类

    ADDTIME (date2 ,time_interval ) //将time_interval加到date2

    CONVERT_TZ (datetime2 ,fromTZ ,toTZ ) //转换时区

    CURRENT_DATE ( ) //当前日期

    CURRENT_TIME ( ) //当前时间

    CURRENT_TIMESTAMP ( ) //当前时间戳

    DATE (datetime ) //返回datetime的日期部分

    DATE_ADD (date2 , INTERVAL d_value d_type ) //在date2中加上日期或时间

    DATE_FORMAT (datetime ,FormatCodes ) //使用formatcodes格式显示datetime

    DATE_SUB (date2 , INTERVAL d_value d_type ) //在date2上减去一个时间

    DATEDIFF (date1 ,date2 ) //两个日期差

    DAY (date ) //返回日期的天

    DAYNAME (date ) //英文星期

    DAYOFWEEK (date ) //星期(1-7) ,1为星期天

    DAYOFYEAR (date ) //一年中的第几天

    EXTRACT (interval_name FROM date ) //从date中提取日期的指定部分

    MAKEDATE (year ,day ) //给出年及年中的第几天,生成日期串

    MAKETIME (hour ,minute ,second ) //生成时间串

    MONTHNAME (date ) //英文月份名

    NOW ( ) //当前时间

    SEC_TO_TIME (seconds ) //秒数转成时间

    STR_TO_DATE (string ,format ) //字串转成时间,以format格式显示

    TIMEDIFF (datetime1 ,datetime2 ) //两个时间差

    TIME_TO_SEC (time ) //时间转秒数]

    WEEK (date_time [,start_of_week ]) //第几周

    YEAR (datetime ) //年份

    DAYOFMONTH(datetime) //月的第几天

    HOUR(datetime) //小时

    LAST_DAY(date) //date的月的最后日期

    MICROSECOND(datetime) //微秒

    MONTH(datetime) //月

    MINUTE(datetime) //分返回符号,正负或0

    SQRT(number2) //开平方

    展开全文
  • 下面通过一个简单的存储过程代码段说明了该问题:CREATE OR REPLACE PROCEDURE load_error ISV_td1 test1.td1%TYPE;v_td1xh test1.td1xh%TYPE;v_gxsj timestamp ; -- 时间戳变量v_zhxgsj timestamp ;V_COUNT NUMBER ....

    63d16153b11226349d9963dbacbb88aa.png

    下面通过一个简单的存储过程代码段说明了该问题:

    CREATE OR REPLACE PROCEDURE load_error IS

    V_td1 test1.td1%TYPE;

    v_td1xh test1.td1xh%TYPE;

    v_gxsj timestamp ; -- 时间戳变量

    v_zhxgsj timestamp ;

    V_COUNT NUMBER ; --用于临时存放查询结果数量,如果数量大于2时,以便循环取出处理

    V_STR VARCHAR(100) ; --用于存放临时变量

    v_errorCode load_ajxx_error.errorcode%TYPE ;

    v_errorText load_ajxx_error.errortext%TYPE ;

    v_errorline load_ajxx_error.errorline%TYPE ;

    -- 定义游标类型(用做动态游标)

    TYPE CURSOR_TYPE IS REF CURSOR;

    CURSOR_DYNAMIC CURSOR_TYPE;

    CURSOR test2_CURSOR IS

    SELECT td2xh,td21,td22,td23,td24 FROM test2 ;

    BEGIN

    -- 循环变更游标

    FOR test2_RECORD IN test2_CURSOR LOOP

    BEGIN

    v_td1xh := test2_RECORD.td2xh ;

    V_td1 := test2_RECORD.td21 ; -- 此处可能报缓冲区不足的错误

    --dbms_output.put_line(v_zhxgsj || ',' || v_gxsj) ;

    -- 截获抛出的异常

    EXCEPTION

    WHEN OTHERS THEN

    v_errorcode := SQLCODE ; -- 异常代码

    v_errorText := Sqlerrm ; -- 异常代码描述

    v_errorline := dbms_utility.format_error_backtrace() ; -- 异常所在行(只在oracle 10g才能使用)

    INSERT INTO load_ajxx_error(xh,errorline, errorcode, errortext, tbsj) VALUES(v_td1xh,v_errorline,v_errorcode,v_errorText,SYSDATE) ;

    END ;

    COMMIT;

    END LOOP ;

    END load_error;

    25b11b5a6fe31a746a710368725f49b6.png

    1. 时间戳更改简介:

    使用存储过程引导数据时,通常使用时间字段(时间戳)来确定是否需要更新. 但是,如果在Oracle中将存储过程中的变量定义为DATE,则Oracle将自动将数据表中的时间字段转换为日期类型,并截取时间信息. 但是,我们要导入的数据可能一天要更新多次,并且实时性要求较高,因此必须精确到秒. 此时,使用Oracle的timestamp变量. 此变量产生的值是: 14年3月15日至12月31日,该日期足够准确,可供我们使用.

    a8671a1e70e0f9b158d9a9d083539842.png

    2. 人工骨异常处理简介:

    使用存储过程引导数据时,异常处理是必不可少的oracle 过程 异常处理,因为我们需要知道在哪个操作中发生了错误,从而导致数据无法正确插入. 如果只有一个数据有问题,那么我们必须继续处理其他数据而不会出现问题. 在处理完所有数据之后,我们需要转到日志表以检查哪些数据错误以及哪些数据错误. ,然后通过分析解决问题数据.

    img_2_2409648583D3163582901_27.jpg

    具体如下:

    通常,我们使用游标处理一组数据,因此我们将代码块添加到游标的循环主体中,以处理整个游标周期中可能出现的问题:

    115ad8fc74d3bcbcd367230119ed3a11.jpg

    BEGIN

    -- 循环变更游标

    FOR test2_RECORD IN test2_CURSOR LOOP

    BEGIN

    v_td1xh := test2_RECORD.td2xh ;

    V_td1 := test2_RECORD.td21 ; -- 此处可能报缓冲区不足的错误

    --dbms_output.put_line(v_zhxgsj || ',' || v_gxsj) ;

    -- 截获抛出的异常

    EXCEPTION

    WHEN OTHERS THEN

    v_errorcode := SQLCODE ; -- 异常代码

    v_errorText := Sqlerrm ; -- 异常代码描述

    v_errorline := dbms_utility.format_error_backtrace() ; -- 异常所在行(只在oracle 10g才能使用)

    INSERT INTO load_ajxx_error(xh,errorline, errorcode, errortext, tbsj) VALUES(v_td1xh,v_errorline,v_errorcode,v_errorText,SYSDATE) ;

    END ;

    COMMIT;

    END LOOP ;

    END ;

    开始...异常...结束;在FOR循环中至关重要.

    SQLCODE: oracle中的关键字,表示错误代码.

    SQLERRM: oracle中的关键字,表示错误描述. 有时可能很长,您可以使用substr对其进行拦截. 通常oracle 过程 异常处理,只需要排名前200名就足够了. 我们只需要知道一些简单的信息即可.

    dbms_utility.format_error_backtrace(): 仅在Oracle 10g中引入的功能,这意味着找到发生错误的行

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-168999-1.html

    展开全文
  • As we all know,MySQL的存储过程就类似于脚本,既然似脚本就会有使用到变量的时候。MySQL存储过程常见的变量:局部变量、用户变量、系统变量……一、局部变量过程体中,可以...其中,type为MySQL的数据类型,如:i...

    As we all know,MySQL的存储过程就类似于脚本,既然似脚本就会有使用到变量的时候。

    MySQL存储过程常见的变量:局部变量、用户变量、系统变量……

    一、局部变量

    在过程体中,可以声明局部变量,用来临时保存一些值。

    1、定义局部变量语法:

    DECLARE  var_name[, var_name] ...  type [DEFAULT value];

    其中,type为MySQL的数据类型,如:int、float、date、varchar(length)

    注意:

    ①DECLARE用来声明局部变量,且DECLARE仅被用在BEGIN ... END复合语句里,并且必须在复合语句的开头,在任何其它语句之前;可以被用在嵌套的块中,除了那些用相同名字声明变量的块。

    ②如果要给变量提供一个默认值,使用DEFAULT子句(值可以是常数,也可以指定为一个表达式);如果没有DEFAULT子句,初始值为NULL。

    2、基本格式:

    CREATE PROCEDURE sp_name ([proc_parameter[,...]])

    BEGIN

    DECLARE var_name1 type [DEFAULT value];

    DECLARE var_name2 type [DEFAULT value];

    DECLARE……;

    [characteristic ...];

    END

    例1:创建过程,为局部变量指定默认值,并调用该过程

    mysql>delimiter $$

    mysql> create procedure test1(out num1 int)->begin-> declare num2 int default 100;-> set num1=num2;->end->$$

    mysql>delimiter ;

    mysql>call test1(@num);

    mysql> select@num;+------+

    | @num |

    +------+

    | 100 |

    +------+

    解析:

    创建test1存储过程:输出的是num1变量的值,声明局部变量num2是int类型、默认值是100,用set将num2的值(未处理,则默认值)赋给num1;

    调用test1:用用户变量num去接收存储过程的输出值num1……

    默认值除了字面量,还可以是复杂的表达式,包括标量子查询

    例2:创建过程,使用所有球员的数量来初始化一个变量

    mysql>delimiter $$

    mysql> create procedure test2(out num1 int)->begin-> declare num2 int default(select count(*) fromPLAYERS);-> set num1=num2;->end$$mysql>delimiter ;

    mysql>call test2(@num);mysql> select@num;+------+

    | @num |

    +------+

    | 14 |

    +------+

    注意:MySQL不支持数组作为局部变量。

    3、局部变量的作用域:

    也就是变量能正常使用而不出错的程序块的范围。

    在嵌套块的情况下,

    在外部块中声明的变量可以在内部块中直接使用;

    在内部块中声明的变量只能在内部块中使用。

    4d642006509b50e8077cc4f4d4170260.png

    解析:变量v2只能用在内部块b2中,块b3中的set语句和最后一条set语句都是错误的。

    二、用户变量

    >用户变量与数据库连接有关:在当前连接中声明的变量,在连接断开的时候,就会消失;在此连接中声明的变量无法在另一连接中使用。

    >一个@符号表示的就是用户变量。

    1、用户变量的定义(set、select):

    1)set语句为用户变量赋值:

    可以使用“=”或“:=”作为分配符;

    分配给每个变量的expr可以为整数、实数、字符串或者NULL值;

    mysql> set @zjc:=999;

    mysql> select@zjc;+------+

    | @zjc |

    +------+

    | 999 |

    +------+

    2)select语句为用户变量赋值:

    分配符必须为“:=”而不能用“=”,因为在非SET语句中=被视为一个比较操作符;

    mysql> select @abc:=123;+-----------+

    | @abc:=123 |

    +-----------+

    | 123 |

    +-----------+mysql> select@abc;+------+

    | @abc |

    +------+

    | 123 |

    +------+

    注意:

    ①用户变量随处可以定义,随处可以使用;不定义可以直接使用(值默认为null)。

    ②用户变量的变量名的形式:@var_name,要有@符号。

    ③滥用用户变量会导致程序难以理解及管理。

    拓展之变量赋值:set语法

    MySQL里面的变量是不严格限制数据类型的,变量的数据类型根据赋给变量的值而随时变化。

    SET variable_assignment [, variable_assignment] ...

    variable_assignment:

    user_var_name=expr|[GLOBAL | SESSION] system_var_name =expr|[@@global. | @@session. | @@] system_var_name = expr

    ##用来给用户变量、系统变量赋值,也可以给过程中的局部变量赋值。

    注意:

    set系统变量时,不带作用域修饰,默认是指会话作用域;

    (特别注意,有些系统变量不带作用域修饰,无法设置,因此最好都带上作用域设置系统变量)。

    2、用户变量的作用域

    只要是在当前连接定义的用户变量,在当前连接里用都是OK的,除此之外都不行。

    3、与局部变量区别:

    局部变量只有变量名字,没有@符号;用户变量名前有@符号。

    都是先定义,再使用;未定义的变量,select值为空。

    局部变量只在存储过程内部使用,在过程体外是没有意义的,当begin-end块处理完后,局部变量就消失;而用户变量可以用在存储过程的内部和外部。

    Tips:在存储过程内部,使用局部变量,不要使用用户变量。

    三、MySQL变量之用户变量与系统变量

    1、用户变量如上所述@var_name(一个@符号)

    ①用户变量和数据库连接有关,连接后声明变量,连接断开后,自动消失;

    ②select一个没有赋值的用户变量,返回NULL,也就是没有值;

    Mysql的变量类似于动态语言,变量的值随所要赋的值的类型而改变。

    2、系统变量:根据系统变量的作用域分为:全局变量与会话变量(两个@符号)

    ①全局变量(@@global.)

    在MySQL启动的时候由服务器自动将全局变量初始化为默认值;

    全局变量的默认值可以通过更改MySQL配置文件(my.ini、my.cnf)来更改。

    ②会话变量(@@session.)

    在每次建立一个新的连接的时候,由MySQL来初始化;

    MYSQL会将当前所有全局变量的值复制一份来做为会话变量(也就是说,如果在建立会话以后,没有手动更改过会话变量与全局变量的值,那所有这些变量的值都是一样的)。

    #全局变量与会话变量的区别:对全局变量的修改会影响到整个服务器,但是对会话变量的修改,只会影响到当前的会话。

    展开全文
  • 文章 衣舞晨风 2014-01-21 773浏览量 PL/SQL之--存储过程 一、存储过程 存储过程是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来...

    Oracle开发与使用文章收藏

    收集一些Oracle开发与使用文章,以便于后续查找.

    【基础类】

    1.ORACLE函数大全

    2.Orace常用函数

    3.oracle 日期函数介绍

    4.Oracle中常用的to_Char用法详解(有FMT的详细列表)

    5.ORACLE中日期和时间函数汇总(转载)

    6.SQL Server和Or...

    文章

    长征2号

    2017-03-06

    1202浏览量

    Oracle开发与使用文章收藏

    收集一些Oracle开发与使用文章,以便于后续查找.

    【基础类】

    1.ORACLE函数大全

    2.Orace常用函数

    3.oracle 日期函数介绍

    4.Oracle中常用的to_Char用法详解(有FMT的详细列表)

    5.ORACLE中日期和时间函数汇总(转载)

    6.SQL Server和Ora...

    文章

    长征2号

    2017-05-12

    1125浏览量

    Oracle中如何写存储过程

    Oracle中如何写存储过程

    存储过程是什么? 存储过程是一种命名的PL/SQL程序块,输入、输出参数数量【0个或多个】,通常没有返回值【也有特殊的情况】。

    运行SQL语句时,Oracle是要先编译再执行的;而存储过程是已经编译好的代码,所以被调用或引用时,执行效率非常高。

    存储过程被保存在数...

    文章

    优惠码领取

    2019-03-30

    898浏览量

    阿里云爆款特惠专场,精选爆款产品低至0.95折!

    爆款ECS云服务器8.1元/月起,云数据库低至1.5折,限时抢购!

    广告

    oracle迁移mysql数据库注意(转)

    oracle转mysql修改:1. substr() substr( string , 0, 10) 这里测试 必须从 第一位获取 既是 substr(string , 1 , 10)2. to_char() 只能用做oracle的函数,兼容oracle和mysql故 改为concat( ...

    文章

    developerguy

    2016-03-23

    1249浏览量

    Oracle与Sql Server差异点详解

    1、create函数或存储过程异同点

    Oracle 创建函数或存储过程一般是 create or replace ……

    SQL SERVER 则是在创建之前加一条语句,先判断是否已经存在,如果存在删除已有的函数或存储过程。

    函数语句:

    if exists (select ...

    文章

    衣舞晨风

    2014-01-22

    864浏览量

    Oracle与Sql Server差异点详解

    1、create函数或存储过程异同点

    Oracle 创建函数或存储过程一般是 create or replace ……

    SQL SERVER 则是在创建之前加一条语句,先判断是否已经存在,如果存在删除已有的函数或存储过程。

    函数语句:

    if exists (select ...

    文章

    jiankunking

    2014-01-22

    1034浏览量

    JAVA ORACLE存储过程

    使用JAVA编写ORACLE存储过程,原谅见:

    http://www.huihoo.com/java/oracle/oracle8i_java.html

    同时给出一个简单的用JAVA编写的HELLO ORACLE存储过程(转载)

    用java编写oracle存储过程

    jdbc 发表于 2...

    文章

    wangccsy

    2006-02-22

    415浏览量

    PL/SQL函数和存储过程

    前言

    活到老,学到老。

    基本概念

    --ORACLE 提供可以把PL/SQL 程序存储在数据库中,并可以在任何地方来运行它。这样就叫存储过程或函数。过程和函数统称为PL/SQL子程序,他们是被命名的PL/SQL块,均存储在数据库中,并通过输入、输出参数或输入/输出参数与其调用者交换信息。过程和函数...

    文章

    arrowhalo

    2018-01-14

    782浏览量

    如何调试oracle,sqlserver存储过程

    调试oracle存储过程

    环境: win2003 server + oracle9i + pl/sql developer 7

    调试方法:

    1 在pl/sql developer 里右击要调试的存储过程,选择"添加调试信息"命令

    2 如果存储过程没有语法错误,右击存储过程,选择"测试"命令

    3 在...

    文章

    航空母舰

    2016-05-12

    1240浏览量

    Mybatis调用存储过程

    调用存储过程

    mybatis调用存储过程时需要指定statementType="CALLABLE",这样Mybatis内部中调用sql语句时将采用CallableStatementHandler,而CallableStatementHandler内部将使用CallableStatement来调用存...

    文章

    elim1

    2017-11-04

    633浏览量

    oracle查看包存储过程,函数,以及存储过程参数,函数参数

    1. 今天查看系统代码时意识到系统中有太多的包以及它们的参数实在太多不容易记,所以想做一个查询,把它们都查出来

    2. 查看系统中用到的包中所包含的存储过程,函数等

    SELECT U.PACKAGE_NAME AS 包名, U.OBJECT_NAME AS 方法

    FROM USER_ARGUM...

    文章

    rudy_gao

    2014-04-22

    558浏览量

    多层数据库开发十:存 储 过 程

    第十章 存 储 过 程  这一章介绍怎样使用存储过程。存储过程是数据库服务器端的一段程序,它有两种类型。一种类似于SELECT查询,用于检索数据,检索到的数据能够以数据集的形式返回给客户。另一...

    文章

    非常老帅

    2004-11-05

    585浏览量

    Oracle——14存储过程

    存储过程是存放在数据字典中的程序块,它可以在不同用户和应用程序间共享,并可实现程序的优化和重用。

    一、存储过程的创建和执行

    1、利用SQL命令创建存储过程

    语法格式如下:

    create [or replace] procedure [schema.]procedureName[(p...

    文章

    elim1

    2012-06-10

    452浏览量

    oracle 数据加密

    Oracle 9i2 特色功能:  1、返回值为自定义对象类型的函数。例如SDO_GEOMETRY数据类型。  2、可以用Java或C语言编写存储过程。  Oracle Spatial 高级功能可以使用返回值为SDO_GEOMETRY数据类型的自定义函数作为几何列获取空间数据。  加密实现:  1...

    文章

    技术小胖子

    2017-12-14

    885浏览量

    SQL Server vs Oracle 简单语法比较

    1、SQL SERVER变量必须以@开头。

    2、SQL SERVER语句后不需要写分号结束符。

    3、oracle变量类型number可以修改为sql

    server的decimal

    4、oracle变量类型varchar2可以修改为s...

    文章

    jiankunking

    2014-01-21

    533浏览量

    SQL Server vs Oracle 简单语法比较

    1、SQL SERVER变量必须以@开头。

    2、SQL SERVER语句后不需要写分号结束符。

    3、oracle变量类型number可以修改为sql

    server的decimal

    4、oracle变量类型varchar2可以修改为s...

    文章

    衣舞晨风

    2014-01-21

    773浏览量

    PL/SQL之--存储过程

    一、存储过程

    存储过程是一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。oracle可以把PL/SQL程序储存在数据库中,并可以在任何地方来运行它。存储过程被称为PL/SQL子程序,是被命名的PL/SQL快,...

    文章

    烟火_

    2014-10-10

    478浏览量

    存储过程介绍及asp存储过程的使用

    一、先介绍一下什么是存储过程 存储过程是利用SQL Server所提供的Tranact-SQL语言所编写的程序。Tranact-SQL语言是SQL Server提供专为设计数据库应用程序的语言,它是应用程序和SQL Server数据库间的主要程序式设计界面。它好比Oracle数据库系统中的Pr...

    文章

    springfe

    2005-08-26

    555浏览量

    OceanBase 2.2 版本在存储过程功能上做了哪些改进和突破?

    OB君:好消息!「 OceanBase 2.2 版本 」正式上线官网啦!(点击阅读原文即可直接下载)OceanBase 2.2版本是成功支撑2019年天猫双11大促的稳定版本,同时也是用于TPC-C测试且荣登TPC-C性能榜首的版本。本文为 “OceanBase 2.2 解析系列” 第二篇,该系列...

    文章

    荔子liqi

    2020-04-01

    768浏览量

    Oracle常见问题

    版权声明:转载请注明出处:http://blog.csdn.net/dajitui2024https://blog.csdn.net/dajitui2024/article/details/79396635

    ...

    文章

    z奶油面包

    2018-02-28

    816浏览量

    oracle中的存储过程使用

    一 存储过程的基本应用

    1 创建存储过程(SQL窗口)

    create or replace procedure update_staff

    as

    begin

    update staff set name = 'xy';

    commit;

    end update_staff;...

    文章

    科技探索者

    2017-11-22

    666浏览量

    .Net处理Oracle中Clob类型字段总结

    最近在做项目中用到Clob这个字段,Clob是存储无限长字符的Oracle字段,用的时候网上找资料找了好久,内容不是很多,大部分都不能用,当然也有可以用的,测试了不同版本,整理了一下,给大家在做项目的时候以参考。

    表操作

    第一种方案很简单,是数据库表中的某个字段是Clob类型,需要对这个表进行...

    文章

    范大脚脚

    2017-11-15

    654浏览量

    理解ORACLE 字符集【转】

    一、引言

    ORACLE数据库字符集,即Oracle全球化支持(Globalization Support),或即国家语言支持(NLS)其作用是用本国语言和格式来存储、处理和检索数据。利用全球化支持,ORACLE为用户提供自己熟悉的数据 库母语环境,诸如日期格式、数字格式和存储序列等。Or...

    文章

    北在南方

    2016-04-15

    1665浏览量

    【pl/sql】PLSQL常用配置【转】

    1、PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码; 设 置方法:PL/SQL Developer 7.1.2  ->tools->Preferences-&gt...

    文章

    北在南方

    2016-04-13

    1339浏览量

    【pl/sql】PLSQL常用配置【转】

    1、PL/SQL Developer记住登陆密码 在使用PL/SQL Developer时,为了工作方便希望PL/SQL Developer记住登录Oracle的用户名和密码; 设 置方法:PL/SQL Developer 7.1.2  ->tools->Preferences-&gt...

    文章

    yangyi_dba

    2012-01-01

    714浏览量

    PL/SQL之--函数

    一、函数

    函数是作为数据库对象存储在oracle数据库中,函数又被称为PL/SQL子程序。oracle处理使用系统提供的函数之外,用户还可以自己定义函数。函数通常被作为一个表达式来调用或存储过程的一个参数,具有返回值。通常用于返回特定的数据。 函数语法如下:

    create or repla...

    文章

    烟火_

    2014-10-11

    472浏览量

    Oracle 存储过程动态建表

    动态sql,顾名思义就是动态执行的sql,也就是说在没执行之前是动态的拼接的。

    任务

    传入参数:新建的表名hd+当前的年和月,例如hd_201105

    表结构是:字段1:id ,类型是number,可以自动增加

    字段2:name 类型是varcha2,长度20

    字段3:city 类型是varchar...

    文章

    橘子红了呐

    2017-11-14

    996浏览量

    C/C++封装库ocicpplib调用Oracle存储过程的方法

    工作这么多年,一直使用Mysql, Oracle数据库没有接触过, 这次要使用C/C++语言来调用Oracle的存储过程, 懒得自己去看OCI的API了, 直接上网找别人封装的库, 最后发现了这个ocicpplib, 下载了看了一下, 还不错, 使用起来比较简单。下面就对我使用这个库来调用存储过程...

    文章

    double2li

    2013-03-28

    861浏览量

    SQL:Oracle 目录

    ylbtech-Miscellaneos-SQL:Oracle 目录

    Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系...

    文章

    吞吞吐吐的

    2017-10-04

    708浏览量

    Oracle存储过程详解(引用)+补充(转) dbms_output包 good

    执行存储过程时,execute和call的区别

    EXEC is a sqlplus command that put its argument as an anonymous pl/sql block: 'EXEC xxx' is transformed to 'BEGIN xxx; END;'...

    文章

    developerguy

    2015-09-08

    971浏览量

    展开全文
  • 1. 创建实例数据库create database db5;use db5;2.创建一个简单的工作表,并插入数据create table t(s1 int);insert into t values(5);3.创建程序实例 create procedure ...SQL语句存储过程的第一部分是 create pro...
  • 变量定义:DECLARE variable_name [,variable_name...] ...其中,datatype为mysql的数据类型,如:INT, FLOAT, DATE, VARCHAR(length)例:DECLARE l_int INT unsigned default 4000000;DECLARE l_numeric NUMERIC...
  • 0.前言在Oracle的存储过程中,可能会遇到数据处理,假如我们目前的功能在一个Packages中Packages封装了多个不同功能的Procedure,我们在一个Procedure里面进行统计在另外一个Procedure进行计算 这就需要一个存放结果...
  • 附:函数库mysql存储过程基本函数包括:字符串类型,数值类型,日期类型一、字符串类|| //字符串连接CHARSET(str) //返回字串字符集CONCAT (string2 [,… ]) //连接字串INSTR (string ,substring ) //返回substring...
  • 在本教程中,您将学习各种MySQL表类型存储引擎。了解MySQL中每个表类型的功能至关重要,以便您可以有效地使用它们来最大限度地提高数据库的性能。MySQL为其表提供了各种存储引擎,它们分别如下所示:...
  • 搜索热词一、MysqL 存储过程参数(in)MysqL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MysqL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)...
  • 标量数据类型标量数据类型变量只有一个值,且内部没有分量。标量数据类型包括数字型,字符型,日期型和布尔型。这些类型有的是 Oracle SQL 中有的数据类型,有的是 PL/SQL 自身附加的数据类型。下面我们来详细介绍...
  • mysql存储过程中使用变量批量修改数据BEGINdeclare i int;#查找表的列数declare column_name_temp varchar(100);##查找表的列名DECLARE column_un_change varchar(100);DECLARE table_temp_name varchar(100);...
  • 存储过程之自定义数组类型

    千次阅读 2021-01-19 07:54:49
    SQL> create or replace type myvarray_list as varray(10) of varchar2(50...2 /类型已创建。SQL> create or replace procedure show_list(2 p_varlist in myvarray_list3 )4 is5 str varchar2(50);6 begin7 ...
  • 展开全部首先需要知道“另一个存储过程”的结果集的所有列的类型。假设“另一个存储过程”的名62616964757a686964616fe78988e69d8331333361323032字是sp1,没有参数,返回的结果集共3列,全部为int型,那么“存储...
  • 创建存储过程: DELIMITER $$ DROP PROCEDURE IF EXISTS `testINVarchar` $$ CREATE PROCEDURE `testINVarchar`(IN inTableName VARCHAR(128),OUT inNUM INT) BEGIN SET @tmpNUM = 0; SET @SQLStr=CONCAT('SELECT ...
  • 一组用于完成特定数据库功能的SQL语句集,该SQL语句集经过编译后存储在数据库系统中。在使用时候,用户通过指定已经定义的...存储过程基本结构:CREATE [ OR REPLACE ] PROCEDURE 存储过程名称(参数名 in 类型, 参...
  • 一、变量的定义mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end 块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default...
  • CREATE DEFINER=`root`@`%` PROCEDURE `create_table_by_unit_top_id`( out out_result int(8)) BEGIN #结束标识定义 DECLARE edone INT DEFAULT 0 ;... ########替换变量开始-------------------
  • 知道数据类型就要知道变量数据类型怎么存储,可是为什么python的变量不需要声明数据类型就可以直接赋值?变量如果有数据类型,那变量不是可以为任意数据类型?那真正的数据类型如int在内存存储的字节大小应该为多少...
  • 在函数和储存过程中使用的变量decleardeclear a int unsigned default 1;这种变量需要设置变量类型 而且只存在在 begin..end 这段之内select .. into.. 直接将表内内容赋值到指定变量当中select name,bid into @a,@b...
  • 在C语言中,对变量存储类型说明有以下四种:auto 自动变量 (动态存储)register 寄存器变量(动态存储)extern 外部变量(静态存储)static 静态变量(静态存储)所谓存储类型是指变量占用内存空间的方式,也称为存储方式...
  • 存储过程的参数 ---IN 定义一个输入参数变量,用于传递参数给存储过程 --OUT 定义一个输出参数变量,用于从存储过程获取数据 ---IN OUT 定义一个输入、输出参数变量,兼有以上两者的功能 --这三种参数只能说明类型,...
  • C语言数据类型变量

    2021-05-20 06:27:44
    《C语言数据类型变量》由会员分享,可在线阅读,更多相关《C语言数据类型变量(75页珍藏版)》请在人人文库网上搜索。1、第3章C数据类型变量,学习目的和要求: 掌握数据类型变量的基本概念、特点和使用方法 。...
  • 1.load data infileload data infile 'newbooks.txt' into table books;该命令从newbooks.txt文件将原始数据读入到表books中。默认情况下,文件中数据字段必须通过tab键进行...存储引擎--表格类型create table table...
  • mysql存储过程中declare 和set 定义变量的区别:->...以declare关键字声明的变量,只能在存储过程中使用,称为存储过程变量。这种变量需要设置变量类型,而且只存在 begin....end 这段内例如:de...
  • --1.将mysql分隔符从;设置为&...定义存储过程,获取特定表列关键词的数量--(传入参数table_name字符串类型,为表名;传入参数column_name字符串类型,为列名;传入参数key_name字符串类型,为关键字;...
  • 昨天我们讲了mysql存储过程创建修改与删除,下面我们这篇教程是讲关于mysql存储过程变量的定义赋值操作哦。一、变量的定义 mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end块中使用...
  • 什么叫数据类型变量的类型定义有什么作用?数据类型是指数据的类型。 Java中主要有八种基本数据类型:byte、short、int、long、float、double、boolean、char。 各种数据类型作用: 如果有一天,你发现你喜欢小编,...
  • SQL语句需要先编译然后执行,而存储过程(Stored Procedure)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。存储过程是可...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,352,293
精华内容 540,917
关键字:

存储过程变量类型