我的一條SQL如下:我在.NET中如何得到j的返回值?我不用存儲過程。
declare i number;
        j number(10) :=0;
begin
  select count(1) into i from TEST_TB where id=1 and TNAME='Sky';
  if i=0 then
    begin
      insert into TEST_TB(id, tname)values(1, 'Sky');
    end;
  else 
      j := j+1;
  end if;
  
  select count(1) into i from TEST_TB where id=2 and TNAME='Grubby';
  if i=0 then
    begin
      insert into TEST_TB(id, tname)values(2, 'Grubby');
    end;
  else 
      j := j+1;
  end if;
  
  select count(1) into i from TEST_TB where id=3 and TNAME='Moon';
  if i=0 then
    begin
      insert into TEST_TB(id, tname)values(3, 'Moon');
    end;
  else 
      j := j+1;
  end if;
end;

解决方案 »

  1.   

    这是pl/sql段,咋返回结果啊,不用存储过程好像没办法哦楼主游戏论坛的吧,sql里一堆好熟的名字...
      

  2.   

    本人打魔獸爭霸的高手,Oracle新手用select可以嗎?How?
      

  3.   

    这明显不是SQL语句啊
    而是PL/SQL块,这怎么可能在.net得到返回值
    除非.net有执行PL/SQL块的东东
      

  4.   

    。declare i number;
            j number(10) :=0;
            l_sql varchar2(1000);  
    begin
      select count(1) into i from TEST_TB where id=1 and TNAME='Sky';
      if i=0 then
        begin
          insert into TEST_TB(id, tname)values(1, 'Sky');
        end;
      else 
          j := j+1;
      end if;
      
      select count(1) into i from TEST_TB where id=2 and TNAME='Grubby';
      if i=0 then
        begin
          insert into TEST_TB(id, tname)values(2, 'Grubby');
        end;
      else 
          j := j+1;
      end if;
      
      select count(1) into i from TEST_TB where id=3 and TNAME='Moon';
      if i=0 then
        begin
          insert into TEST_TB(id, tname)values(3, 'Moon');
        end;
      else 
          j := j+1;
      end if;
      l_sql :='select '''||j||''''||' from Test_tb';
      --DBMS_OUTPUT.PUT_LINE(l_sql);
      execute   immediate   l_sql;
    end;.Net中當然有執行的語句
    各位達達,這樣行嗎?
      

  5.   

    我只记得.net里能执行SQL、能执行存储过程
    还不知道.net里居然也能执行一个PL/SQL块
    楼主能不能让我学习一下,告诉怎么做
      

  6.   


    那就只能改成数个select语句连接来看了!