我用ADOCommand执行以下内容:
AdoCommand1.CommandText := 'IF EXISTS(SELECT ... FROM ...) INSERT INTO TABLE1 VALUES (...)';以上语句对应的是SqlServer数据库。执行没问题。现在我的问题是,如果是Oracle数据库,我这个CommandText该如何写才不会出错?
我查了一下pl/SQL的语法,改成这样: IF EXIST(SELECT ... FROM ...) THEN INSERT INTO TABLE1 VALUES (...),但是执行是就是报错。而且这种语句在PL/Sql Develepor中执行也提示‘无效的SQL’

解决方案 »

  1.   

    insert into table1 values (...)
    exists (selcet ...from ...)带星星的不一定是高手,
    不帶星星的不一定不是高手
      

  2.   

    EXISTS在oracle里使用和sql是不一样的。
    可能楼上的是对的
      

  3.   

    语法不一样。你查查oracle的资料就知道了
      

  4.   

    资料我查过了,按书上讲的写语句,还是不行。
    谢谢 包子 .
    其实我是想知道 if... then ..else 在这个时候怎 么用?
      

  5.   

    先查一遍SELECT ... FROM ...
    if not query.IsEmpty then
    begin
      在INSERT
    end;
      

  6.   

    SELECT USERNAME INTO v_uname From users;
       if SQL%Found then
          insert into Table1 Values (...)上面是我写的在ORACLE PL/SQL Developer中的语句,呵呵,我的存储过程也就是这么写的了,有问题再讨论一下吧,你先试试。还有,我跟小COOL在DELPHI版都带星星的了 :)附:没有想到,都转行不做技术了,还会再来搞ORACLE的搞一下。
      

  7.   

    select * from ta_cartype;
    if SQL%Found then
    select * from ta_area在PL/SQL中执行,提示“无效字符”
      

  8.   

    oralce里面没有if exists这种东西,你可以用过程实现或者变通一下,用下面的语法insert into 表名(字段名1,字段名2)  select '值1','值2' from dual  
    where exists(select ... from ... where rownum=1); //加rownum=1可以提高效率
      

  9.   

    insert into TableName(Fields1,Fields2...) select Value1,Value2... from dual
    where exists(select ... from ... where rownum=1); 
      

  10.   

    用CASE WHEN  THEN  ELSE