我想 传参过去一个sql语句然后再存储过程里面运行并返回数据集别嫌我 画蛇添足,用oralce存储过程来执行sql语句 为什么不用adp.net
因为我返回得数据集有sdo_geometry字段数据  C#这个不支持这个类型
于是我用odp.net 虽然能select * from 表 这样得到 数据
但是如果我用spatial函数的话 会返回错误 比如 SDO_FILTER()函数
返回错误  ORA-03113: 通信通道的文件结束
我查过了这是应为  貌似odp.net一些空间函数不支持 他有限度 2048K于是我想起了存储过程来执行并返回结果
但是初用oracle数据库的我  对oracle存储过程的我  是丈二和尚 摸不着头脑啊。
所以请教下能否帮忙写个 
带一个参数 返回数据结果得 存储过程

解决方案 »

  1.   

    相关帖子 可以看我另一篇
    http://topic.csdn.net/u/20081108/09/3af2140f-aa3f-4b5f-b588-522409ff0788.html
      

  2.   

    create or replace procedure getData(v_sql varchar,result out sys_refcursor)
    is 
    begin
       open result for v_sql;
    end;
    /
      

  3.   

    to: sleepzzzzz
    那个返回值 再c#用什么类型?
      

  4.   

    先说声谢谢了
    知道什么类型了  是游标类型
    但c#里面怎么接收这个数据?我想返回xml数据
      

  5.   

    参考:
    http://blog.chinaunix.net/u/7579/showart_145921.html
      

  6.   

    FYI:  http://www.west263.com/info/html/chengxusheji/C-C--/20080224/13469.html
    -- 给你个例子:
    1:建立PACKAGE:
    CREATE OR REPLACE package SCOTT.pk_wt
    is
    type mytype is ref cursor;
    procedure p_wt(mycs out mytype);
    function f_get(str in varchar2)
    return varchar2;
    end; 
    /
    说明:其实PACKAGE只是个声明罢了。我们在这里定义了一个存储过程返回结集和一个函数,返回字符串。2:建立PACKAGE BODY:
    CREATE OR REPLACE package BODY SCOTT.pk_wt
    is
    procedure p_wt(mycs out mytype)
    is
    begin
    open mycs for select * from test;
    end p_wt;function f_get(str varchar2)
    return varchar2
    is
    str_temp varchar2(100) := good luck!; 
    begin
    str_temp := str_temp || str;
    return str_temp;
    end f_get;end pk_wt;
    /
    // C# 代码:
    OracleCommand cmd=new OracleCommand("pk_wt.p_wt",orcn);
    cmd.CommandType=CommandType.StoredProcedure;
    OracleParameter p1=new OracleParameter("mycs",OracleType.Cursor);
    p1.Direction=System.Data.ParameterDirection.Output;
    cmd.Parameters.Add(p1);
    OracleDataAdapter da=new OracleDataAdapter(cmd);
    DataSet ds=new DataSet();
    da.Fill(ds,"test");
    this.DataGrid1.DataSource=ds;
    this.DataGrid1.DataBind();
      

  7.   

    TO: mantisXF 
    前些天你消失啦.
      

  8.   

    TO: mantisXF 
    首先 谢谢了 
    其次 这个能不能返回一个xml数据集?
    因为里面有数据类型 是c#基础类不支持的 
    是空是数据
      

  9.   

    对返回的结果进行处理,转换为xml
      

  10.   

    to: dsdfds12  
     怎么处理? 用什么接收数据集?
      

  11.   

    对返回的数据转为XML这个方法应该是比较好的,
    我用JAVA处理过你这样的需求,其实就是拼串啊,把xml的格式和取得的数据按xml规范拼在一起,C#也是同样道理.
      

  12.   

    如果你在数据库本来就是以XML数据存放的,那就用oracle的xml相关函数即可.
      

  13.   

    to: sleepzzzzz
     因为我查询返回结果中有空间数据
    数据库里面存储类型是sdo_geometry类型的返回时回出现 不支持的数据类型 问题我还没解决
    查了好多也不知道怎么解决