我的存储过程:
create or replace procedure p_User_Group_Add
(
GROUP_NAME_IN in    VARCHAR2,
GROUP_PURVIEW_IN in  INTEGER,
GROUP_NOTE_IN   in  VARCHAR2
)
is
v_count int:=0;
begin
 select count(*)into v_count from Tb_User_Group where group_name = GROUP_NAME_IN;if v_count = 0 then
  insert into tb_user_group
    ( group_name, group_purview, group_note)
  values
    ( GROUP_NAME_IN, GROUP_PURVIEW_IN, GROUP_NOTE_IN);
    commit;
 end if;
end;
我的C#代码:
        OracleConnection con = new OracleConnection();
        con.Open();
        OracleCommand cmd = new OracleCommand("p_User_Group_Add", con);
        cmd.CommandType = CommandType.StoredProcedure;        OracleParameter []para = { new OracleParameter("GROUP_NAME_IN","admin"),
                                new OracleParameter("GROUP_PURVIEW_IN",1), 
                                new OracleParameter("GROUP_NOTE_IN","test")};
        cmd.Parameters.AddRange(para);
        int ret = cmd.ExecuteNonQuery();        con.Close();为什么变量 ret 接收到的值总是:1  ??
应该返回0才对啊!因为我的并没有插入数据啊表数据:  Group_ID  Group_Name    group_purview       group_note
1 admin     1               admin

解决方案 »

  1.   

    是不是表里面有一条数据呢?
    不然的话就是你的ExecuteNonQuery方法有问题
      

  2.   


    declare
    v_value int:=0;
    begin
         select count(*) into v_value from Tb_User_Group where group_name='????';  
         --v_value  0
         v_value:=sql%rowcount
         ;--v_value  1
    end;你自己调试一下吧,
      

  3.   

    在procedure中输出v_count  
      

  4.   

    declare 
    v_value int:=0; 
    begin 
        select count(*) into v_value from Tb_User_Group where group_name='????';  
        --v_value  0 
        v_value:=sql%rowcount ;
        --v_value  1 
    end; 这里没有插入数据,但v_value确实是1,看来是sql%rowcount 的问题
      

  5.   

    v_value=1 就证明有一条数据的
      

  6.   

    不用"sql%rowcount",用别的方法,问题已经解决create or replace procedure p_User_Group_Add
    (
    GROUP_NAME_IN in    VARCHAR2,
    GROUP_PURVIEW_IN in  INTEGER,
    GROUP_NOTE_IN   in  VARCHAR2,
    AffectRows out Number
    )
    is
    v_count int:=0;
    begin
     select count(*)into v_count from Tb_User_Group where group_name = GROUP_NAME_IN;if v_count = 0 then
    insert into tb_user_group
        ( group_name, group_purview, group_note)
      values
        ( GROUP_NAME_IN, GROUP_PURVIEW_IN, GROUP_NOTE_IN);
        AffectRows:=sql%rowcount;
        commit;     
    else
        AffectRows:=0;    
     end if;
    end;