SQL语句总是异常,太杯具了

蔡袅 2013-08-01 04:56:34
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) 创建于 21月-01日',
NULL,
'828',
'江正');

DECLARE
V_SEQID NUMBER;
BEGIN
SELECT SEQ_QQGROUP_ID.CURRVAL INTO V_SEQID FROM dual;
END;

INSERT INTO T_BD_GROUPLINE
(OP_ID, GH_ID, GL_OP_ALIAS)
Select '828', V_SEQID, '江正(1001286)'
FROM DUAL
UNION
Select '1474', SEQ_QQGROUP_ID.CURRVAL, '陈维(1002392)'
FROM DUAL
UNION
Select '466', SEQ_QQGROUP_ID.CURRVAL, '冯敏(1000609)'
FROM DUAL
UNION
Select '1000', SEQ_QQGROUP_ID.CURRVAL, '郭珊珊(1001705)'
FROM DUAL
UNION
Select '103', SEQ_QQGROUP_ID.CURRVAL, '齐湘波(1000119)'
FROM DUAL
UNION
Select '13', SEQ_QQGROUP_ID.CURRVAL, '张莉(1000013)' FROM DUAL
问题在哪?
...全文
351 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
引用 19 楼 gioh0022 的回复:
引用 18 楼 xx_mm 的回复:
引用 16 楼 gioh0022 的回复:
把表结构和序列语句发出看看
各位找出原因了,有个字段有数据类型不匹配。
结帖散分
好吧给分
  • 打赏
  • 举报
回复
引用 18 楼 xx_mm 的回复:
引用 16 楼 gioh0022 的回复:
把表结构和序列语句发出看看
各位找出原因了,有个字段有数据类型不匹配。
结帖散分
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
引用 16 楼 gioh0022 的回复:
把表结构和序列语句发出看看
各位找出原因了,有个字段有数据类型不匹配。
cosio 2013-08-02
  • 打赏
  • 举报
回复
 t_bd_groupline 表结构中,是不是有数值型INSERT 是字符型!
  • 打赏
  • 举报
回复
把表结构和序列语句发出看看
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
引用 14 楼 xx_mm 的回复:
[quote=引用 13 楼 guanchaoyi 的回复:]

/* Formatted on 2013/08/02 14:39 (Formatter Plus v4.8.7) */
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) 创建于 21月-01日', 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 '466', v_seqid, '冯敏(1000609)'
        FROM DUAL
      UNION
      SELECT '1000', v_seqid, '郭珊珊(1001705)'
        FROM DUAL
      UNION
      SELECT '103', v_seqid, '齐湘波(1000119)'
        FROM DUAL
      UNION
      SELECT '13', v_seqid, '张莉(1000013)'
        FROM DUAL;

   COMMIT;
END;

写成这样就可以了,我检查了,你写得有错误: 1. INSERT INTO t_bd_groupheader() ..这里多了个分号. 2. 另外帮你调整了一下逻辑。
嗯,逻辑这样调整好,可是还有错误呢 这句 INSERT INTO t_bd_groupline (op_id, gh_id, gl_op_alias) 无效的数字[/quote]我都检查了数据类型没问题,可能的原因会是什么?
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
引用 13 楼 guanchaoyi 的回复:

/* Formatted on 2013/08/02 14:39 (Formatter Plus v4.8.7) */
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) 创建于 21月-01日', 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 '466', v_seqid, '冯敏(1000609)'
        FROM DUAL
      UNION
      SELECT '1000', v_seqid, '郭珊珊(1001705)'
        FROM DUAL
      UNION
      SELECT '103', v_seqid, '齐湘波(1000119)'
        FROM DUAL
      UNION
      SELECT '13', v_seqid, '张莉(1000013)'
        FROM DUAL;

   COMMIT;
END;

写成这样就可以了,我检查了,你写得有错误: 1. INSERT INTO t_bd_groupheader() ..这里多了个分号. 2. 另外帮你调整了一下逻辑。
嗯,逻辑这样调整好,可是还有错误呢 这句 INSERT INTO t_bd_groupline (op_id, gh_id, gl_op_alias) 无效的数字
关工 2013-08-02
  • 打赏
  • 举报
回复

/* Formatted on 2013/08/02 14:39 (Formatter Plus v4.8.7) */
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) 创建于 21月-01日', 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 '466', v_seqid, '冯敏(1000609)'
        FROM DUAL
      UNION
      SELECT '1000', v_seqid, '郭珊珊(1001705)'
        FROM DUAL
      UNION
      SELECT '103', v_seqid, '齐湘波(1000119)'
        FROM DUAL
      UNION
      SELECT '13', v_seqid, '张莉(1000013)'
        FROM DUAL;

   COMMIT;
END;

写成这样就可以了,我检查了,你写得有错误: 1. INSERT INTO t_bd_groupheader() ..这里多了个分号. 2. 另外帮你调整了一下逻辑。
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
SELECT SEQ_QQGROUP_ID.CURRVAL INTO V_SEQID FROM dual; 在这里提示无效数字
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
引用 10 楼 lnuwhy 的回复:

DECLARE
  V_SEQID NUMBER;
BEGIN
  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) 创建于 21月-01日',
   NULL,
   '828',
   '江正');
  SELECT SEQ_QQGROUP_ID.CURRVAL INTO V_SEQID FROM dual;
  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 '466', V_SEQID, '冯敏(1000609)'
    FROM DUAL
  UNION
  Select '1000', V_SEQID, '郭珊珊(1001705)'
    FROM DUAL
  UNION
  Select '103', V_SEQID, '齐湘波(1000119)'
    FROM DUAL
  UNION
  Select '13', V_SEQID, '张莉(1000013)' FROM DUAL;
commit;
end;
建议你看看plsql的语法。
嗯,刚转几天ORacle,可是还是报错,开头提示无效数字。。
lnuwhy 2013-08-02
  • 打赏
  • 举报
回复

DECLARE
  V_SEQID NUMBER;
BEGIN
  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) 创建于 21月-01日',
   NULL,
   '828',
   '江正');
  SELECT SEQ_QQGROUP_ID.CURRVAL INTO V_SEQID FROM dual;
  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 '466', V_SEQID, '冯敏(1000609)'
    FROM DUAL
  UNION
  Select '1000', V_SEQID, '郭珊珊(1001705)'
    FROM DUAL
  UNION
  Select '103', V_SEQID, '齐湘波(1000119)'
    FROM DUAL
  UNION
  Select '13', V_SEQID, '张莉(1000013)' FROM DUAL;
commit;
end;
建议你看看plsql的语法。
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
有人吗,急需指点。。
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
SQL语法转Oracle语法太别扭了。。。 总是不对
蔡袅 2013-08-02
  • 打赏
  • 举报
回复
引用 6 楼 aio_o 的回复:
declare begin end; 这是一个匿名块,块结束后,declare之后的变量也释放了,你想用变量,在sqlplus里用var指令
还是不对啊
aio_o 2013-08-01
  • 打赏
  • 举报
回复
declare begin end; 这是一个匿名块,块结束后,declare之后的变量也释放了,你想用变量,在sqlplus里用var指令
善若止水 2013-08-01
  • 打赏
  • 举报
回复
DECLARE
  V_SEQID NUMBER;
BEGIN
  SELECT SEQ_QQGROUP_ID.CURRVAL INTO V_SEQID FROM dual;

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 '466', V_SEQID, '冯敏(1000609)'
    FROM DUAL
  UNION
  Select '1000', V_SEQID, '郭珊珊(1001705)'
    FROM DUAL
  UNION
  Select '103', V_SEQID, '齐湘波(1000119)'
    FROM DUAL
  UNION
  Select '13', V_SEQID, '张莉(1000013)' FROM DUAL;
 END;
寻找鱼钩的鱼 2013-08-01
  • 打赏
  • 举报
回复
路过 刚开始学
蔡袅 2013-08-01
  • 打赏
  • 举报
回复
没人在吗? 可以指出错误嘛,额各位
蔡袅 2013-08-01
  • 打赏
  • 举报
回复
蔡袅 2013-08-01
  • 打赏
  • 举报
回复
错了,愿意是这样:
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) 创建于 21月-01日',
   NULL,
   '828',
   '江正');

DECLARE
  V_SEQID NUMBER;
BEGIN
  SELECT SEQ_QQGROUP_ID.CURRVAL INTO V_SEQID FROM dual;
END;

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 '466', V_SEQID, '冯敏(1000609)'
    FROM DUAL
  UNION
  Select '1000', V_SEQID, '郭珊珊(1001705)'
    FROM DUAL
  UNION
  Select '103', V_SEQID, '齐湘波(1000119)'
    FROM DUAL
  UNION
  Select '13', V_SEQID, '张莉(1000013)' FROM DUAL
批量sql解析为数组, SQL终结符解析 前段时间在写一个服务端程序的时候,需要用到mysql. 客户端连接服务端执行sql分好几种情况, { 查询SQL, 执行SQL, 执行SQL事务, 批量执行支持, 查询执行混合 } ... 其中的"批量执行"就有点让我头疼, 玩过sql的都知道, 批量执行一般以";" 终结符算一条sql语句, 以此分割. 难点就是把批量的sql语句, 分割为单条, 一个一个的执行.估计有的易友可能想到了"分割文本, 发送文本数组" 首先"发送文本数组", 我不喜欢,有时候显得麻烦. 其次"分割文本", 你可能会遇到这样以下这样的情况, 也就是sql字符串中出现了";", 你能怎么办? 你也很绝望对吧? INSERT INTO `User`(name) values('剑''齿;虎');SELECT LAST_INSERT_ID(); 以上问题还有, 字符串中包含单引号就需要用两个单引号表示.... 实在不想屈服于前面两种蛋疼的方式,试着自己封装子程序解析, 忽略字符串什么的. 有时候脑子是个好东西,可惜我好像没有似的... 感觉设计起来还挺复杂麻烦的,我没学过什么脚本设计,编译设计的. 于是前段时间论坛有几个帖子被顶起来了,一个叫"无间酱"的大佬制作了好几个练手的脚本语言设计, 我灵机一动...脚本也会遇到这样的问题, 就把源码中的解析终结符部分给抠出来了...总算说到重点了. 刚开始还不能直接用, 改了改还算可以了. INSERT INTO User (name,pwd) values('剑齿虎;哇', 'aabb');--注释A:插入语句-- SELECT * FROM User; /*注释B:查询*/ UPDATE User SET pwd='ac''c' WHERE uid=1 结果: 数组:3{ “INSERT INTO User (name,pwd) values('剑齿虎;哇', 'aabb');”, “--注释A:插入语句-- SELECT * FROM User;”, “/*注释B:查询*/ UPDATE User SET pwd='ac''c' WHERE uid=1” } 感觉瞬间正规了许多, 不用去使用那些"偏方", 导致出现各种各样的杯

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧