小弟刚学oracle,遇到一个问题这是在oracle 9i release 1 中创建的一个过程
create or replace procedure count_num(out_count out number)
as
begin
select count(*) into out_count from wygldba.employee;
end count_num;在asp.net中调用
OracleConnection cn = new OracleConnection( strConn );
try
{
cn.Open(); OracleCommand cmd = cn.CreateCommand(); cmd.CommandText = "COUNT_NUM";
cmd.CommandType = CommandType.StoredProcedure;

cmd.Parameters.Add( "out_count", OracleType.Number );
cmd.Parameters["out_count"].Direction = ParameterDirection.Output;

         cmd.ExecuteNonQuery();// 在这里出现异常 string re = cmd.Parameters["out_count"].Value.ToString();
}
大侠们看看是怎么回事?

解决方案 »

  1.   

    用函数:
    create or replace function count_num return number
    as
    var_count number;
    begin
    select count(*) into var_count from wygldba.employee;
    return var_count;
    end count_num;
    /
      

  2.   

    还是这个错误:ERROR 位于第 1 行:
    ORA-06550: 第 1 行, 第 7 列:
    PLS-00201: 必须说明标识符 'NUM'
    ORA-06550: 第 1 行, 第 7 列:
    PL/SQL: Statement ignored
      

  3.   

    我用10G+vs2003.net测了,完全没问题啊,看看是不是你的机器有问题
    或是那句select count(*) into语句,是不是在表中数据为零时有这个问题。
      

  4.   

    有没有权限问题,在asp中执行存储过程的用户和oracle中创建存储过程的是同一用户吗?
      

  5.   

    加上打开连接和关闭连接try
    {
    cn.Open();OracleCommand cmd = cn.CreateCommand();cmd.CommandText = "COUNT_NUM";
    cmd.CommandType = CommandType.StoredProcedure;cmd.Parameters.Add( "out_count", OracleType.Number );
    cmd.Parameters["out_count"].Direction = ParameterDirection.Output;
             cmd.connection.open;
             cmd.ExecuteNonQuery();// 在这里出现异常
    cmd.connection.close;string re = cmd.Parameters["out_count"].Value.ToString();
    }
      

  6.   

    我觉得是你参数传递的问题,不是oracle的问题
      

  7.   

    我用10g免费企业版+asp.net 1.1测试了(Microsoft OLE DB Provider for oracle),即使表记录为空,也没有任何问题了.oracle和asp.net代码都正确