+ -
当前位置:首页 → 问答吧 → 这段plsql语句为什么不对?

这段plsql语句为什么不对?

时间:2011-11-16

来源:互联网

我想先做一个判断,列表里有没有符合条件的记录,如果有则删除。
然后再插入一条记录~
但是我这么写,它说我是无效sql语句,大家帮我看看是哪写错了~~~~
SQL code

IF  EXISTS(select * from TB_FILE_ELESIGN where FD_MSEQ='201111111622' and FD_SEGMENT='2')
delete from TB_FILE_ELESIGN where FD_MSEQ='201111111622' and FD_SEGMENT='2';
insert into TB_FILE_ELESIGN( FD_SEQ,FD_MSEQ, FD_NAME, FD_URL,FD_UPLOADTIME,FD_UPLOADERNO, FD_UPLOADERNAME,FD_FILETYPENAME,FD_ISDELETE,FD_SEGMENT) 
values(FILEUP_SEQ.nextVal,'201111111622','新建 Microsoft Word 文档.doc','http://172.28.18.99\MeterPicture\UploadFile\001003004001\dfd3ca79-77cb-4d6b-af8e-df58c292e145.doc',to_date('2011-11-16 09:18:41','yyyy-mm-dd HH24:MI:SS'),'900016','陈赛玉','doc','0','2')

作者: speak13579   发布时间: 2011-11-16

Oracle的语法要用pl/sql才行.
SQL code
DECLARE
   v_count   NUMBER;
BEGIN
   SELECT COUNT (*)
     INTO v_count
     FROM tb_file_elesign
    WHERE fd_mseq = '201111111622' AND fd_segment = '2';

   IF v_count > 0
   THEN
      DELETE FROM tb_file_elesign
            WHERE fd_mseq = '201111111622' AND fd_segment = '2';
   END IF;

   INSERT INTO tb_file_elesign
               (fd_seq, fd_mseq,
                fd_name,
                fd_url,
                fd_uploadtime,
                fd_uploaderno, fd_uploadername, fd_filetypename, fd_isdelete,
                fd_segment
               )
        VALUES (fileup_seq.NEXTVAL, '201111111622',
                '新建 Microsoft Word 文档.doc',
                'http://172.28.18.99\MeterPicture\UploadFile\001003004001\dfd3ca79-77cb-4d6b-af8e-df58c292e145.doc',
                TO_DATE ('2011-11-16 09:18:41', 'yyyy-mm-dd HH24:MI:SS'),
                '900016', '陈赛玉', 'doc', '0',
                '2'
               );

   COMMIT;
END;

作者: tx2730   发布时间: 2011-11-16

SQL code
declare l_cnt int;
select count(1) into l_cnt from TB_FILE_ELESIGN where FD_MSEQ='201111111622' and FD_SEGMENT='2';

IF  l_cnt >0 then
delete from TB_FILE_ELESIGN where FD_MSEQ='201111111622' and FD_SEGMENT='2';
insert into TB_FILE_ELESIGN( FD_SEQ,FD_MSEQ, FD_NAME, FD_URL,FD_UPLOADTIME,FD_UPLOADERNO, FD_UPLOADERNAME,FD_FILETYPENAME,FD_ISDELETE,FD_SEGMENT) 
values(FILEUP_SEQ.nextVal,'201111111622','新建 Microsoft Word 文档.doc','http://172.28.18.99\MeterPicture\UploadFile\001003004001\dfd3ca79-77cb-4d6b-af8e-df58c292e145.doc',to_date('2011-11-16 09:18:41','yyyy-mm-dd HH24:MI:SS'),'900016','陈赛玉','doc','0','2');
end if

作者: cosio   发布时间: 2011-11-16

1、楼主的语句缺少then和end if两个关键词
2、insert语句后面少了分号
3、这个需求可以用merge,一句SQL就能实现。

作者: xiaobn_cn   发布时间: 2011-11-16

引用 3 楼 xiaobn_cn 的回复:
1、楼主的语句缺少then和end if两个关键词
2、insert语句后面少了分号
3、这个需求可以用merge,一句SQL就能实现。

怎么用merge?

作者: speak13579   发布时间: 2011-11-16

兄弟,这是SQL Server的写法吧,怎么还有EXIST
请按PL/SQL存储过程的语法来改编吧。

作者: LuiseRADL   发布时间: 2011-11-16

SQL code
http://blog.chinaunix.net/space.php?uid=16981447&do=blog&cuid=430716

作者: cosio   发布时间: 2011-11-16

热门下载

更多