精华内容
下载资源
问答
  • returning

    2010-05-18 14:29:00
    RETURNING JIHUA_NUM, SHIJ_NUM INTO??????????参考的资料是《PL/SQL用户指南与参考》2、赋值语句Returning: insert into t1 values ( 90 , SERVICE , BEIJING ) Returning rowid , name into row_id,info;

    RETURNING JIHUA_NUM, SHIJ_NUM INTO??????????

    参考的资料是《PL/SQL用户指南与参考》

    2、赋值语句Returning:

     

       insert into t1 values ( 90 , 'SERVICE' , 'BEIJING' )

       Returning rowid , name into row_id,info;

        注:只限insert、update、delete一条记录时进行赋值
     
    3、自定义参数——&:
     
        可SQL和PLSQL中均可使用自定义参数,即需要自己输入值的参数
        select * from ldcom where comcode=&a andname=&b;
        PLSQL:
        declare i int := &a;   n int := &b;
     
    4、绑定变量的使用:
     
        可使用绑定变量的办法提高SQL效率

     

        SQL> variable x number ;

        SQL> exec :x := 8600 ;

        SQL> select * from ldcom where comcode= :x ;

        注:PLSQL中的declare即隐士绑定,无需再申明
     
        可用Print查看绑定变量  SQL> print x;
        也可使用查询  SQL> select :x from dual;
     
        实际的简单应用:    

     

        variable x number ;

     

        declare

          v_date date ;

        begin

          for i in   1 .. 10 loop

            :x := i;

            select sysdate +:x into v_date from dual;

            dbms_output.put_line(v_date);

          end loop ;

        end ;

        /

     
        在execute immediate中的应用:    

     

        declare

        v_x t1.num% type ;

        begin

        execute immediate 'update t1 set num=8888 where id=:a returning num into :b'

        using 2 returning into v_x;

        dbms_output.put_line(v_x);

        end ;

        注意returning的返回值在动态SQL中的操作格式

     
    5、%TYPE和%ROWTYPE的区别:
     
        %TYPE针对某一字段类型(数组也是单一的类型)
        %ROWTYPE针对某一整表的类型(游标也是整表)
     
    6、计数循环的逆序法:

     

        for i in reverse 10 .. 100 loop

        注意reverse的位置不要记错
     
    7、一般的游标使用法:
     
        1、游标的正常使用需要四步
     
        ①定义游标

        cursor c2(dept_no number default 10 ) is----注意定义dept_no的方法

        select name ,agentcode from laagent where rownum <= dept_no;

        ②打开游标

        open c3(dept_no => 20 ); ---- 可以重新定义 dept_no

        ③提取游标数据

        fetch c2 into dept_name,dept_loc; ---- 字符类型、个数相等

        fetch c3 into deptrec; ----deptrec rowtype

        exit when c3% notfound ;

        ④关闭游标

        CLOSE c3;

        游标属性

        % FOUND       -- 布尔型属性,当最近一次读记录时成功返回 , 则值为 TRUE

        % NOTFOUND    -- 布尔型属性,与 %FOUND 相反;

        % ISOPEN      -- 布尔型属性,当游标已打开时返回 TRUE

        % ROWCOUNT    -- 数字型属性,返回已从游标中读取的记录数。

     
        2、 使用for自动打开、提取、关闭游标

     

        FOR c1_rec IN c1 LOOP

        FOR c1_rec IN ( SELECT dname, loc FROM dept) LOOP

     
        3、注:单一的SQL语句都是一个隐式的游标,属性为

     

        SQL% FOUND       -- 布尔型属性,当最近一次读记录时成功返回 , 则值为 TRUE

        SQL% NOTFOUND    -- 布尔型属性,与 %FOUND 相反;

        SQL% ISOPEN      -- 布尔型属性,当游标已打开时返回 TRUE

        SQL% ROWCOUNT    -- 数字型属性,返回已从游标中读取的记录数。

        例如:DELETEFROM emp WHERE deptno=v_deptno;

             IF SQL % NOTFOUND THEN ...

     
    8、For Update锁定数据:

     

        CURSOR emp_cursor is select empno,sal

        from emp where deptno=v_deptno for update of sal nowait ;

        注意:其中的of sal,for update可以精确到某一个或几个字段
     
        在使用了For Update之后可以在delete和update语句中使用current of cursor_name子句

        for emp_record in emp_cursor loop

          if emp_record.sal < 1500 then

            update emp set sal= 1500 where current of emp_cursor;

          end if ;

        end loop ;

        但需注意:只能针对for update的表进行修改。

     
    9、Package中的子程序可以重载
     
        即函数名相同,参数个数不同
     
    10、PL/SQL的执行顺序
     
        在同一Package中,若要使用自身定义的Function或Procedure,则必须是之前定义过的。
        同理,即便使用参数,也必须在前面定义过。
        也就是说:一般最终的执行程序,会放在Package的最后,除非将所有部分都申明成Public。
     
    展开全文
  • RETURNING

    2009-04-21 16:17:00
    利用 DML的RETURNING 语句可以返回刚刚操作的记录的信息,然后可以马上用于判断,这样避免了再次使用SQL语句做一次SELECT,提高了程序的性能,具体例子如下,注意UPDATE和DELETE返回值的差别: CREATE OR REPLACE ...

    利用 DML的RETURNING 语句可以返回刚刚操作的记录的信息,然后可以马上用于判断,这样避免了再次使用SQL语句做一次SELECT,提高了程序的性能,具体例子如下,注意UPDATE和DELETE返回值的差别:

    CREATE OR REPLACE PROCEDURE test_returning
    IS
     v_empno emp.empno%TYPE;
     v_ename emp.ename%TYPE;
     v_sal emp.sal%TYPE;
    BEGIN
     INSERT INTO emp(empno,ename,sal)VALUES(1234,'SHADOW',4000)
     RETURNING ename,sal INTO v_ename,v_sal;
     dbms_output.put_line(SQL%ROWCOUNT);
     dbms_output.put_line(v_ename);
     dbms_output.put_line(v_sal);

     UPDATE emp SET sal=3000 WHERE empno=1234
     RETURNING ename,sal INTO v_ename,v_sal;
     dbms_output.put_line(SQL%ROWCOUNT);
     dbms_output.put_line(v_ename);
     dbms_output.put_line(v_sal);
     
     DELETE FROM emp WHERE empno=1234
     RETURNING ename,sal INTO v_ename,v_sal;
     dbms_output.put_line(SQL%ROWCOUNT);
     dbms_output.put_line(v_ename);
     dbms_output.put_line(v_sal);
    END;
    /

    运行如下:

    SQL> @g:/orcl/returning.sql

    过程已创建。

    SQL> exec test_returning
    1
    SHADOW
    4000
    1
    SHADOW
    3000
    1
    SHADOW
    3000

    PL/SQL 过程已成功完成。

     

    参考http://hi.baidu.com/kongzong/blog/item/184f97cafd39ff86c8176825.html 

    展开全文
  • Returning

    2010-12-31 20:34:26
    我们经常做的事情是创建一个对象,操作这个对象,然后返回这个对象: [code="ruby"] def build_options options = Hash.new options[:key1] = 'value1' ...Rails提供了returning,使用ruby最常...
    我们经常做的事情是创建一个对象,操作这个对象,然后返回这个对象:

    def build_options
    options = Hash.new
    options[:key1] = 'value1'
    options[:key2] = 'value2'
    options
    end

    Rails提供了returning,使用ruby最常用的block技术,简化这个步骤:

    class Object
    def returning(value)
    yeild (value)
    return value
    end
    end

    现在我们的代码:

    def build_options
    returning Hash.new do |options|
    options[:key1] = 'value1'
    options[:key2] = 'value2'
    end
    end
    展开全文
  • Support RETURNING

    2021-01-11 11:28:37
    t really about returning itself, but about making it easy to support RETURNING. I've tried to break it down to individually review-able commits. There's one bigger commit "Combine router ...
  • 主要介绍了oracle RETURNING 子句使用方法,需要的朋友可以参考下
  • RETURNING语句

    千次阅读 2016-05-23 15:06:30
    1.DELETE的情况,RETURNING返回的肯定是DELETE之前的结果; INSERT的情况,RETURNING返回的一定是INSERT之后的结果。 UPDATE的情况,RETURNING返回的一定是UPDATE之后的结果。 2.RETURNING语句似乎和RETURN通用。...

    1.DELETE的情况,RETURNING返回的肯定是DELETE之前的结果;

      INSERT的情况,RETURNING返回的一定是INSERT之后的结果。

      UPDATE的情况,RETURNING返回的一定是UPDATE之后的结果。


    2.RETURNING语句似乎和RETURN通用。(即两个可以相互替换)

    3.INSERT INTO VALUES语句支持RETURNING语句,而INSERT INTO SELECT语句不支持。

    4.MERGE语句不支持RETURNING语句。
     

    ORACLE的DML语句中可以指定RETURNING语句。RETURNING语句的使用在很多情况下可以简化PL/SQL编程。

     

    在使用RETURNING子句是应注意以下几点限制:
      1.不能与DML语句和远程对象一起使用;
      2.不能检索LONG类型信息;
      3.当通过视图向基表中插入数据时,只能与单基表视图一起使用。 


    问题:
    使用UPDATE语句的时候,RETURNING得到的结果是UPDATE之前的结果还是UPDATE之后的结果?

    例:

     

     

     

    SQL> CREATE TABLE T (ID NUMBER, NAME VARCHAR2(30));
    
    表已创建。

     

    SQL> SET SERVEROUT ON
    SQL> DECLARE
     V_NAME VARCHAR2(30);
     BEGIN
     INSERT INTO T VALUES (1, 'YANGTK') RETURNING NAME INTO V_NAME;
     DBMS_OUTPUT.PUT_LINE('INSERT: ' || V_NAME);
     V_NAME := NULL;
     UPDATE T SET NAME = 'YTK' RETURNING NAME INTO V_NAME;
     DBMS_OUTPUT.PUT_LINE('UPDATE: ' || V_NAME);
     V_NAME := NULL;
     DELETE T RETURNING NAME INTO V_NAME;
     DBMS_OUTPUT.PUT_LINE('DELETE: ' || V_NAME);
     END;
     /
    INSERT: YANGTK
    UPDATE: YTK
    DELETE: YTK
    
    PL/SQL 过程已成功完成。


    显然,UPDATE操作的RETURNING语句是返回UPDATE操作之后的结果。

    顺便总结几个RETURNING操作相关的问题:


    1.RETURNING语句似乎和RETURN通用。

     

     

     

    SQL> SET SERVEROUT ON
    SQL> DECLARE
     V_NAME VARCHAR2(30);
     BEGIN
     INSERT INTO T VALUES (1, 'YANGTK') RETURN NAME INTO V_NAME;
     DBMS_OUTPUT.PUT_LINE('INSERT: ' || V_NAME);
     V_NAME := NULL;
     UPDATE T SET NAME = 'YTK' RETURN NAME INTO V_NAME;
     DBMS_OUTPUT.PUT_LINE('UPDATE: ' || V_NAME);
     V_NAME := NULL;
     DELETE T RETURN NAME INTO V_NAME;
     DBMS_OUTPUT.PUT_LINE('DELETE: ' || V_NAME);
     END;
     /
    INSERT: YANGTK
    UPDATE: YTK
    DELETE: YTK
    
    PL/SQL 过程已成功完成。

     



    2.RETURNING语句也可以使用SQLPLUS的变量,这样,RETURNING语句不一定非要用在PL/SQL语句中。

     

     

     

     

    SQL> VAR V_NAME VARCHAR2(30)
    SQL> INSERT INTO T VALUES (1, 'YANGTK') RETURNING NAME INTO :V_NAME;
    
    已创建 1 行。
    
    
    SQL> PRINT V_NAME
    
    
    V_NAME
    --------------------------------
    YANGTK
    
    
    SQL> UPDATE T SET NAME = 'YTK' RETURNING NAME INTO :V_NAME;
    
    
    已更新 1 行。
    
    
    SQL> PRINT V_NAME
    
    
    V_NAME
    --------------------------------
    YTK
    
    
    SQL> DELETE T RETURNING NAME INTO :V_NAME;
    
    
    已删除 1 行。
    
    
    SQL> PRINT V_NAME
    
    
    V_NAME
    --------------------------------
    YTK

     




    3.INSERT INTO VALUES语句支持RETURNING语句,而INSERT INTO SELECT语句不支持。MERGE语句不支持RETURNING语句。

     

     

     

     

    SQL> MERGE INTO T USING (SELECT * FROM T) T1
     ON (T.ID = T1.ID)
     WHEN MATCHED THEN UPDATE SET NAME = T1.NAME
     WHEN NOT MATCHED THEN INSERT VALUES (T1.ID, T1.NAME)
     RETURNING NAME INTO :V_NAME;
     RETURNING NAME INTO :V_NAME
    *第 5 行出现错误:
    ORA-00933: SQL 命令未正确结束

     

    SQL> INSERT INTO T SELECT * FROM T RETURNING NAME INTO :V_NAME;
    INSERT INTO T SELECT * FROM T RETURNING NAME INTO :V_NAME
    *第 1 行出现错误:
    ORA-00933: SQL 命令未正确结束

     

    展开全文
  • PostgreSQL returning子句

    千次阅读 2020-03-06 17:35:59
    在数据库中当我们update了一行记录后,如果...目前PostgreSQL支持insert,delete,update的returning。 insert returning 返回的是新插入的值。 delete returning 返回的是被删除的值。 update returning 返回的是更...
  • PSQL RETURNING

    2016-10-18 19:16:47
    RETURNING colname,PostgreSQL会在插入或者更新数据之后会返回你指定的字段
  • 主要介绍了Spring AOP定义AfterReturning增加,结合实例形式分析了Spring面相切面AOP定义AfterReturning增加相关操作技巧与使用注意事项,需要的朋友可以参考下
  • returning 用法

    2015-07-13 14:20:42
    update XXX set yyy=‘yyy’ where zzz=‘zzz’ returning XXX.abc into v_abc; zzz为唯一确定行或主键,否则将会报错
  • <div><p>Currently returning to main menu from the microbe stage or editor is not possible yet.</p><p>该提问来源于开源项目:Revolutionary-Games/Thrive</p></div>
  • <div><ol><li>Do not allow returning with a value</li><li>Return the instance, correctly, even when the user returned explicitly</li></ol>该提问来源于开源项目:wren-lang/wren</p></div>
  • postgresql中的returning

    2020-07-09 11:43:48
    返回修改行,插入行,删除行的...‘returning *’意思是返回你操作的全部数据,也可以是你刚才修改,插入,删除数据的一部分,例如:returning id ,returning name…之类。 举例子: update: insert: delete: ...
  • insert into products (product_no, name, price) values (1, 'cheese', 9.99), (2, 'bread', 1.99),(3, 'milk', 2.99); update mytable set a = 5, b = 3, c = 1 where a >...使用returning 可以避免执行额外的数
  • 今天写代码遇到了@AfterReturning(returning = ‘var’) 查了很多网络资料都只说这个是方法返回值,并没有说是什么方法返回值,这里坐下代码解释 // 被切方法 @RestController @RequestMapping("/show") public class...
  • @AfterReturning

    千次阅读 2017-02-21 19:55:46
    1.作用:外部文件提取本部文件的参构造函数的返回值(即提取返回值,这也是它叫returning的原因),并可以在主语句输出后,外部添加进一两句语句(即添加一两个功能) 2.@AfterReturning的属性值,pointcut/value和returning....
  • plsql RETURNING

    千次阅读 2014-03-09 21:59:23
    例1. 插入一条记录并显示;    DECLARE   Row_id UROWID;   info VARCHAR2(40); BEGIN INSERT INTO dept VALUES (90, ‘SERVICE’, ... RETURNING rowid, dname||’:’||to_char(deptno)||’:’||loc   I
  • oracle:RETURNING 子句

    2019-10-06 15:08:26
    RETURNING 自己通常结合DML 语句使用。(INSERT UPDATE DELETE) 使用方法: UPDATE table_name SET expr1 RETURNING column_name INTO xxx INSERT: 返回的是添加后的值UPDATE:返回时更新后的值 DELETE:...
  • RETURNING的使用:

    2019-07-17 14:15:48
    RETURNING的使用:ORACLE的DML(INSERT,DELETE,UPDATE)语句中可以指定RETURNING语句。而在SELECT语句(DQL)中使用SELECT INTO语句返回值;注意;一般在使用UPDATE的RETURNING语句时,都会返回主键列,当返回的列是修改...
  • returning into 语句

    2015-04-22 16:06:00
    returning into 语句用于执行完语句后返回的值,具体返回执行之前或者之后的结果,多用于在存储过程中 如下所述:delete语句的returning into语句返回的是delete之前的结果insert语句的returning into语句返回的是...
  • RETURNING into用法

    千次阅读 2014-01-10 02:12:51
    returning...into...和insert/upadate/delete语句一起使用,用于赋予指定列的值给相应变量,类似于select...into...语句。returning...into...在insert、update和delete语句中返回的结果是有区别,其中:  1) ...
  • 7.4. returning

    2018-01-05 10:21:00
    例7.3.PostgreSQL insert returning test=# create table account(id serial,name varchar,pass varchar); NOTICE: CREATE TABLE will create implicit sequence "account_id_seq" for s...
  • 6.4. Returning Data From Modified Rows 6.4.返回修改的行数据 Sometimes it is useful to obtain data from modified rows while they are being manipulated. TheINSERT, UPDATE, and DELETE commands all have...
  • PostgreSQL 使用RETURNING返回值

    万次阅读 2015-04-21 08:55:20
    PostgreSQL 使用RETURNING返回值
  • Function_pointer_returning_function_pointer

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 120,285
精华内容 48,114
关键字:

returning