问题如题:
1,在ORACLE 10G 中能创建和使用临时表吗?如果可以最好给出一个DEMO。
2,获取的ROWS集后在怎样返回成DATASET或DATATABLE等形式??请教!
(本人初学ORACLE,一下就用10G,太缺乏这方面的知识了,请高手们不吝赐教!而且就这点分了,呜呜)

解决方案 »

  1.   

    create table t(cid varchar2(100));
    /
    create or replace package pkg_test
    is
      type ResultData is ref cursor;--定义动态游标
      procedure test( rst out ResultData );
    end pkg_test;
    /
    create or replace package body pkg_test
    is
      procedure test( rst out ResultData )
      is
      begin
        Execute Immediate 'create global temporary table tmp( cid VARCHAR(30),cnum NUMBER )On Commit PRESERVE Rows';  --创建临时表
        open rst for 
             select * from t;--返回select * from t所查询的结果集
      end;
    end pkg_test;
    /
      

  2.   

    oracle的临时表是全局临时表,也就是说表的结构是预先要定义好的.对于临时的表数据是临时的,分2种:一种是session级别的,一种是事务级别的.session级别的临时数据,对session有效,各session间相互不可见,事务级别的临时数据,对事务有效,各不同事务相互不可见,事务结束后,临时数据消失
      

  3.   

    1、Oracel 不像sql server 可以用select * from table 返回结果集的,只能利用游标返回结果集。一般会在存储过程中定义一个游标类型作为输出参数。
    2、在dotNet中的调用返回DataSet 的DEMO:
      using (OracleConnection con = DataConnection.GetConnection())
                {
                    OracleParameter oparm = new OracleParameter("P_CURSOR", OracleType.Cursor);
                    oparm.Direction = ParameterDirection.Output;
                    DataSet ds;
                    ds = OracleHelper.ExecuteDataset(con, CommandType.StoredProcedure, "sys_DepartmentCategoryGetAll",oparm);
                    con.Close();
                    return ds.Tables[0];
                }3、Oracle 分为两种临时表:一种是session级别的,另一种是事务级别的。都必须先定义,不像sql server 可以直接定义使用,你可以到网上搜索一下,很多的例子。
      

  4.   

    oracle存储过程中可以直接create语句吗?