免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 3837 | 回复: 18
打印 上一主题 下一主题

看一段pl sql,很短,有什么语法错误? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-09-10 13:46 |只看该作者 |倒序浏览
20可用积分
begin
           insert into tbl1 values('3', 'abc3');
          
           if '4' not exists(select colid from tbl2) then
                     insert into tbl2 values('4', 'def4');
           end if;
end;

以上的写法有什么问题吗?
-------------------------------------------------------------------------------------
表内的数据:
select * from tbl1;
-----------------------
colid   cola
1        abc
2        abc2
3        abc3
----------------------
select * from tbl2;
----------------------
colid    colb
1         def
2         def2
3         def3
---------------------------------------------------------------------------------------
建表的脚本:
create table tbl1(colid varchar2(20), cola varchar2(20))

create table tbl2(colid varchar2(20), colb varchar2(30))
--------------------------------------------------------------------------------------------
Oracle 不认得if exists这样的语法只好用:
--------------------------------------
declare v_A int;
begin
select count(1) from P_ODR into v_A where A = s_ado(0);

if (v_A = 0) then
insert 。。。。。

[ 本帖最后由 TOADLover 于 2009-9-14 10:56 编辑 ]

最佳答案

查看完整内容

我记得 Oracle 中不能用if exists 吧..... 好像是if 不认识exists 的返回的东东

论坛徽章:
0
2 [报告]
发表于 2009-09-10 13:46 |只看该作者
我记得 Oracle 中不能用if exists 吧..... 好像是if 不认识exists 的返回的东东

论坛徽章:
0
3 [报告]
发表于 2009-09-10 14:07 |只看该作者
有什么问题吗?这样写有什么问题?

论坛徽章:
0
4 [报告]
发表于 2009-09-10 14:10 |只看该作者
if '4' not exists(select colid from tbl2) then
                     insert into tbl2 values('4', 'def4');
           end if;
------------------------------------------------------------
我的意思就是:
如果 '4' 不在tbl2的colid字段的集合中,才进行插入操作!

论坛徽章:
0
5 [报告]
发表于 2009-09-10 14:10 |只看该作者
这个问题很难吗?有没有路过的高手答一下啊?

论坛徽章:
0
6 [报告]
发表于 2009-09-10 14:11 |只看该作者
我在网上看到一些exists 和in的用法的辨析,可是越看越糊涂。。。。。。。。。。

论坛徽章:
0
7 [报告]
发表于 2009-09-10 14:13 |只看该作者
大部分都是引用同一个地方的

论坛徽章:
0
8 [报告]
发表于 2009-09-10 14:15 |只看该作者
select DOCUMENT_CODE from freight
WHERE
NOT EXISTS (SELECT * FROM TRAFFIC WHERE FREIGHT.DOCUMENT_CODE = TRAFFIC.TRAFFIC_CODE)  
AND FREIGHT_STATE = '0'
---------------------------------------------------------------------------------
这exists一定要有表连接的操作吗?
select DOCUMENT_CODE from freight WHERE DOCUMENT_CODE NOT IN (SELECT TRAFFIC_CODE FROM TRAFFIC) AND FREIGHT_STATE = '0'

----------------------------------------------------------------------------------
http://topic.csdn.net/u/20090505 ... e-d8e3ab6c34c0.html

[ 本帖最后由 TOADLover 于 2009-9-10 14:16 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-09-10 14:28 |只看该作者
好么! 没人理我了。。。。呵呵
---------------------------------------
begin
           insert into tbl1 values('4', 'abc4');
          
           if  not exists (select colid from tbl2) then
                     insert into tbl2 values('4', 'def4')
           end if;
end;
------------------------------------------
这么写也不对啊!!!!!!!!!

[ 本帖最后由 TOADLover 于 2009-9-10 14:30 编辑 ]

论坛徽章:
0
10 [报告]
发表于 2009-09-10 14:30 |只看该作者
  
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP