我将OleDbCommand的sql语句设置为:
declare a varchar2(100);
begin
     select 'a' into a from dual;
end;请问我如何得到a的值?注:sql语句是oracle的

解决方案 »

  1.   

    declare aaa varchar2(100); 
    begin 
         select 想要查找的字段 as aaa from dual; 
    end; 
      

  2.   

    1楼的语句在pl/sql中执行都报错
    “在此select语句中缺少into子句”
      

  3.   

    不能這樣寫吧, 你直接寫      select 'a' from dual; 
    把查詢結果放在datatable中就可以了.
     select 'a' into a from dual 是pl/sql語句。
      

  4.   

    http://www.80diy.com/home/20051102/09/4365672.html
    但还是搞不定,各位帮帮忙吧!
      

  5.   

    declare a varchar2(100); 
    begin 
         select 'a' into a from dual; 
    end; 是写在存储过程里的吗?是的话就用参数形式返回就是了,
    不是的话直接写成:
    select 'a' as  a from dual
    然后把查询结果放到datatable 里面就可以了
      

  6.   

    前几层肯定没用过Oracle
    注意你使用的A是自定义变量,系统不会默认获得他
    解决方法,
    把上述方法存为Proc 然后把A作为输出参数
    然后 CommandType改成存储过程,添加相应的输出参数,这样执行完后,
    输出参数里面就是A的值。
    不过不明白搂主那样的语句有什么意义??
    你的结果不就是得到 ‘a’ ??
    这里我视为举例
      

  7.   

    12楼的lanwilliam,终于被我等到了,哈哈!
    问题中我的确是举例,我的意思是想返回pRID的值,也就是当前插入记录的rowid,以便我在前台程序中定位,我现在的做法是用存储过程:
    CREATE OR REPLACE PROCEDURE SP_INSERT_ZYD
    (
      pddh varchar2,
      pzdr varchar2,
      pRID out ROWID--行号(输出)

    BEGIN
      insert into ZYD (
      ddh ,
      zdr ) values (
      pddh ,
      pzdr ) returning ROWID INTO pRID;--将插入记录的ROWID赋值给RID 
    END;
    但这么简单的insert语句的确不想写存储过程,所以想问一下,是否可以用OleDbCommand直接执行oracle语句块完成该功能,
    如果可以的话,语句怎么写?如何调用?
      

  8.   

                OracleConnection conn = new OracleConnection("Data Source=orcl;User Id=scott;Password=tiger;");
                OracleCommand cmd = new OracleCommand();
                cmd.Connection = conn;
                cmd.CommandType = CommandType.Text;
                cmd.CommandText = "BEGIN SELECT 'a' INTO :a FROM Dual; END;";            OracleParameter opara = new OracleParameter(":a", OracleType.VarChar,50);
                opara.Direction = ParameterDirection.Output;            cmd.Parameters.Add(opara);            try
                {
                    conn.Open();
                    cmd.ExecuteNonQuery();
                    Console.WriteLine(opara.Value);
                }
                catch (OracleException oEx)
                {
                    Console.WriteLine(oEx.Message);
                }
      

  9.   

    OLEDB的方法类似,我就不贴了
    你自己再看看吧
      

  10.   

    zlz_212:
       报内存错误
       vshost.exe--应用程序错误
      

  11.   

    不会报你说的那个错误,倒是OleDB没办法执行Begin...END这样的语句,我试了几次,没成功,以后有空再看看
    PS:用System.Data.OracleClient 效率应该优于System.Data.OleDb   
    如果能够使用Oracle提供的ODP.NET 应该更好
      

  12.   

    oracle是不是没有办法输出数据集?我也一直有这方面的需求。sqlserver倒是没有问题,可以直接输出。