我用的是Oracle数据库,VS2005,我写了一个不带参数的存储过程aaa,作用是修改一条记录,在sql plus里用
execute aaa;成功执行,而在C#中,创建了一个OleDbCommand的对象,comm,我令comm.CommandText="execute aaa"; comm.CommandType=CommandType.Text;然后int i= ExecuteNonquery(comm);
报错,说comm.CommandText为无效sql语句。找了半天,从网上也没相关的资料,都是sql server的,郁闷中。
我也知道可以直接令comm.CommandText="aaa";comm.CommandType=CommandType.StoreProcedure;我试了,这样成功执行,但为什么用execute就不行呢

解决方案 »

  1.   

    execute 是什么呀,是不是Oracle里的,net当然不认了
      

  2.   

    comm.CommandType=CommandType.Text
    comm.CommandType=CommandType.StoreProcedure(用)
      

  3.   

    呵呵,肯定不行,comm.CommandText这个属性接收的是SQL语句或存储过程名,他会把“execute aaa”当成一个SQL语句来执行,注意是SQL不是TSQL
      

  4.   

    不需要execute,aaa是存储过程名,可以把它当作一个sql语句(因为没有参数),而CommandText里只需要sql语句
      

  5.   

    SQl server 就可以使用excute ,而且推荐这样做。
      

  6.   

    sql server可以这样的,sql server中还可以传递带参数的存储过程,如execute aaa @参数1,@参数2,然后再利用参数集对象将这些加入到comm中,执行便可以。
      

  7.   

    请用
    begin
    .......
    end;