[ 一线风 | 2009-11-4 17:41:02 | 阅读: 912 | 分类: 工作相关 | Tag: C# Oracle Package 记录集 游标 | 永久链接 | 评论: 0 ]

C#里的调用代码

C#代码
  1. [Test]   
  2.         public void Page1Test()   
  3.         {   
  4.             using(Database db = DBFactory.Create())   
  5.             {   
  6.                 const string sql = " select * from test_temp where ID < 1000 order by id asc ";   
  7.   
  8.                 OracleCommand cmd = new OracleCommand("PAGESPLIT_PKG.PAGESPLIT_SP",db.Connection);   
  9.                 cmd.CommandType = CommandType.StoredProcedure;   
  10.                 OracleParameter p1 = new OracleParameter("pagesize", OracleDbType.Int32);   
  11.                 p1.Direction = ParameterDirection.Input;   
  12.                 p1.Value = 20;   
  13.                 OracleParameter p2 = new OracleParameter("pageindex", OracleDbType.Int32);   
  14.                 p2.Direction = ParameterDirection.Input;   
  15.                 p2.Value = 2;   
  16.                 OracleParameter p3 = new OracleParameter("sqltext", OracleDbType.Varchar2);   
  17.                 p3.Direction = ParameterDirection.Input;   
  18.                 p3.Value = sql;   
  19.                   
  20.                 OracleParameter p4 = new OracleParameter("Records_out", OracleDbType.Int32,DBNull.Value,ParameterDirection.Output); //就算是空值也要写,否则是会出错的   
  21.                 OracleParameter p5 = new OracleParameter("table_out", OracleDbType.RefCursor,DBNull.Value, ParameterDirection.Output);   
  22.                    
  23.                 cmd.Parameters.Add(p1);   
  24.                 cmd.Parameters.Add(p2);   
  25.                 cmd.Parameters.Add(p3);   
  26.                 cmd.Parameters.Add(p4);   
  27.                 cmd.Parameters.Add(p5);   
  28.   
  29.                 OracleDataAdapter da = new OracleDataAdapter(cmd);   
  30.   
  31.   
  32.                 DataSet ds = new DataSet();   
  33.                 da.Fill(ds);   
  34.   
  35.                 Console.WriteLine(ds.Tables.Count);   
  36.                 Console.WriteLine(ds.Tables[0].TableName);   
  37.                 Console.WriteLine(ds.Tables[0].Rows.Count);   
  38.                 Console.WriteLine("结果:" + cmd.Parameters["Records_out"].Value.ToString());   
  39.   
  40.                 foreach(DataRow  row in ds.Tables[0].Rows)   
  41.                 {   
  42.                     Console.WriteLine(row[1]);   
  43.                 }   
  44.             }   
  45.         }   

 阅读全文及评论...

[ 一线风 | 2009-11-3 15:53:17 | 阅读: 641 | 分类: 学习参考 | Tag: Oracle 性能 | 永久链接 | 评论: 0 ]

因为测试一些东东,需要一些数据,因此就写了个增加数据的东东。这个一来能满足写入的数据,二来能顺便测试一下Oracle的性能。

 

SQL代码
  1.  declare  
  2. maxrecords constant int:=1000000;   
  3. int :=1;   
  4. Begin  
  5. for i in 1..maxrecords loop   
  6. Insert into TEST_TEMP(NAMEvalues (SYS_GUID());   
  7. end loop;   
  8. dbms_output.put_line(' OK ');   
  9. commit;   
  10. end;   
  11.   
  12. --100W 325.969 s  


服务器环境:

linux as 4 + oracle 10g 内存1G,Xeon3.0G 处于Windows平台下的虚拟机。

 阅读全文及评论...

[ 一线风 | 2009-11-2 17:21:52 | 阅读: 1063 | 分类: 学习参考 | Tag: Oracle 新增ID | 永久链接 | 评论: 0 ]
Oracle 新增记录并返回新增加的ID
 
 
PL/SQL代码
  1. CREATE OR REPLACE PROCEDURE TEST_TEMP_INSERT_SP (   
  2.   V_NAME string,   
  3.   V_ID out int  
  4. )   
  5.  AS  
  6. BEGIN  
  7.  INSERT INTO TEST_TEMP(   
  8.  NAME  
  9.  )VALUES(   
  10.  V_NAME   
  11.  )   
  12.  returning ID into V_ID  ;   
  13.  COMMIT;   
  14. END;  

 

ID是用序列和触发器来生成的。

 阅读全文及评论...

[ 一线风 | 2009-10-22 11:11:25 | 阅读: 979 | 分类: 学习参考 | Tag: oracle :new :old | 永久链接 | 评论: 1 ]
SQL代码
  1. create or replace trigger TRI_PrintTest   
  2. before delete or insert or update on TEST_EXAM  --触发事件   
  3. for each row                  -- 每修改一行都需要调用此过程   
  4. begin  
  5.      dbms_output.put_line(:new.IDNEW);     --IDNEW字段更新后的值   
  6.      dbms_output.put_line(:old.IDNEW);       --IDNEW字段更新前的值   
  7. end;  

 

原IDNEW字段是1时,

使用

update TEST_EXAM set IDNEW=5 where SN='5454';

 

则打印结果为:

5
1

 

 阅读全文及评论...

[ 一线风 | 2009-10-22 10:26:06 | 阅读: 372 | 分类: 学习参考 | Tag: ORACLE 函数 | 永久链接 | 评论: 0 ]


SQL中的单记录函数
1.ASCII
返回与指定的字符对应的十进制数;
SQL> select ascii('A') A,ascii('a') a,ascii('0') zero,ascii(' ') space from dual;

        A         A      ZERO     SPACE
--------- --------- --------- ---------
       65        97        48        32


2.CHR
给出整数,返回对应的字符;
SQL> select chr(54740) zhao,chr(65) chr65 from dual;

ZH C
-- -
赵 A

3.CONCAT
连接两个字符串;
SQL> select concat('010-','88888888')||'转23'  高乾竞电话 from dual;

高乾竞电话
----------------
010-88888888转23

4.INITCAP
返回字符串并将字符串的第一个字母变为大写;
SQL> select initcap('smith') upp from dual;

UPP
-----
Smith


5.INSTR(C1,C2,I,J)
在一个字符串中搜索指定的字符,返回发现指定的字符的位置;
C1    被搜索的字符串
C2    希望搜索的字符串
I     搜索的开始位置,默认为1
J     出现的位置,默认为1
SQL> select instr('oracle traning','ra',1,2) instring from dual;

 INSTRING
---------
        9


6.LENGTH
返回字符串的长度;
SQL> select name,length(name),addr,length(addr),sal,length(to_char(sal)) from gao.nchar_tst;

NAME   LENGTH(NAME) ADDR             LENGTH(ADDR)       SAL LENGTH(TO_CHAR(SAL))
------ ------------ ---------------- ------------ --------- --------------------
高乾竞            3 北京市海锭区                6   9999.99                    7

 

 

 阅读全文及评论...