首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

SQL话语返回插入ID,有插入,难道没法做到?

2013-08-29 
SQL语句返回插入ID,有插入,难道没法做到?!!接上贴,http://bbs.csdn.net/topics/390535271 语句是这样,需要

SQL语句返回插入ID,有插入,难道没法做到?!!
接上贴,http://bbs.csdn.net/topics/390535271 


语句是这样,需要加入一个操作:

DECLARE
  V_SEQID NUMBER;
BEGIN
  SELECT SEQ_QQGROUP_ID.NEXTVAL INTO V_SEQID FROM DUAL;
  Insert into T_BD_GROUPHEADER
    (GH_ID,
     GH_Name,
     GH_TYPE,
     GH_LOGO,
     GH_SUMMARY,
     GH_NOTICE_RTF,
     GH_OP_ID_CREATOR,
     GH_CREATOR_NAME)
  Values
    (V_SEQID,
     '江正(1001286) 创建的讨论组',
     '2',
     NULL,
     '江正(1001286) 创建于 08月-02日',
     NULL,
     '828',
     '江正');
  INSERT INTO T_BD_GROUPLINE
    (OP_ID, GH_ID, GL_OP_ALIAS)
    Select 828, V_SEQID, '江正(1001286)'
      FROM DUAL
    UNION
    Select 1474, V_SEQID, '陈维(1002392)'
      FROM DUAL
    UNION
    Select 726, V_SEQID, '姚婕(1001068)'
      FROM DUAL
    UNION
    Select 13, V_SEQID, '张莉(1000013)'
      FROM DUAL
    UNION
    Select 468, V_SEQID, '庄艳(1000611)' FROM DUAL;
  COMMIT;
END;
  
返回插入的V_SEQID,希望插入完后能SELECT出来写在一个SQL里面 SQL select insert
[解决办法]
V_SEQID声明成INTEGER是不是就可以了
[解决办法]
  Insert into T_BD_GROUPHEADER
    (GH_ID,
     GH_Name,


     GH_TYPE,
     GH_LOGO,
     GH_SUMMARY,
     GH_NOTICE_RTF,
     GH_OP_ID_CREATOR,
     GH_CREATOR_NAME)
  Values
    (V_SEQID,
     '江正(1001286) 创建的讨论组',
     '2',
     NULL,
     '江正(1001286) 创建于 08月-02日',
     NULL,
     '828',
     '江正') return id into V_SEQID;


[解决办法]
错了,应该是
 Insert into T_BD_GROUPHEADER
    (GH_ID,
     GH_Name,
     GH_TYPE,
     GH_LOGO,
     GH_SUMMARY,
     GH_NOTICE_RTF,
     GH_OP_ID_CREATOR,
     GH_CREATOR_NAME)
  Values
    (SEQ_QQGROUP_ID.NEXTVAL,
     '江正(1001286) 创建的讨论组',
     '2',
     NULL,
     '江正(1001286) 创建于 08月-02日',
     NULL,
     '828',
     '江正') return GH_ID into V_SEQID;
[解决办法]
那最后再执行一次select V_SEQID from dual?
[解决办法]
oracle 的返回语法跟MS-SQL的不太一样呢,要返回一个值不是这样操作的。返回记录集也不能用直接用个SELECT查询出来就行了。

这是返回单个值的存储过程
  create or replace procedure myPor(v_eno in number,v_ename out varchar2,v_sal out number,v_job out varchar2) is
  begin
  select ename,sal,job into v_ename,v_sal,v_job from emp where eno=v_eno;
  end;

这是返回结果集的存储过程
create or replace procedure sp_pro
                  (spNo in number,p_cursor out testpackage.test_cursor) is
                   begin
                   open p_cursor for select * from emp where deptno=spNo;


                   close p_cursor; 
                   end;
[解决办法]
这个不就是吗,return GH_ID into V_SEQID 就是把主键给你啦。

 Insert into T_BD_GROUPHEADER
    (GH_ID,
     GH_Name,
     GH_TYPE,
     GH_LOGO,
     GH_SUMMARY,
     GH_NOTICE_RTF,
     GH_OP_ID_CREATOR,
     GH_CREATOR_NAME)
  Values
    (SEQ_QQGROUP_ID.NEXTVAL,
     '江正(1001286) 创建的讨论组',
     '2',
     NULL,
     '江正(1001286) 创建于 08月-02日',
     NULL,
     '828',
     '江正') return GH_ID into V_SEQID;

热点排行
Bad Request.