C#里的调用代码
- [Test]
- public void Page1Test()
- {
- using(Database db = DBFactory.Create())
- {
- const string sql = " select * from test_temp where ID < 1000 order by id asc ";
- OracleCommand cmd = new OracleCommand("PAGESPLIT_PKG.PAGESPLIT_SP",db.Connection);
- cmd.CommandType = CommandType.StoredProcedure;
- OracleParameter p1 = new OracleParameter("pagesize", OracleDbType.Int32);
- p1.Direction = ParameterDirection.Input;
- p1.Value = 20;
- OracleParameter p2 = new OracleParameter("pageindex", OracleDbType.Int32);
- p2.Direction = ParameterDirection.Input;
- p2.Value = 2;
- OracleParameter p3 = new OracleParameter("sqltext", OracleDbType.Varchar2);
- p3.Direction = ParameterDirection.Input;
- p3.Value = sql;
- OracleParameter p4 = new OracleParameter("Records_out", OracleDbType.Int32,DBNull.Value,ParameterDirection.Output); //就算是空值也要写,否则是会出错的
- OracleParameter p5 = new OracleParameter("table_out", OracleDbType.RefCursor,DBNull.Value, ParameterDirection.Output);
- cmd.Parameters.Add(p1);
- cmd.Parameters.Add(p2);
- cmd.Parameters.Add(p3);
- cmd.Parameters.Add(p4);
- cmd.Parameters.Add(p5);
- OracleDataAdapter da = new OracleDataAdapter(cmd);
- DataSet ds = new DataSet();
- da.Fill(ds);
- Console.WriteLine(ds.Tables.Count);
- Console.WriteLine(ds.Tables[0].TableName);
- Console.WriteLine(ds.Tables[0].Rows.Count);
- Console.WriteLine("结果:" + cmd.Parameters["Records_out"].Value.ToString());
- foreach(DataRow row in ds.Tables[0].Rows)
- {
- Console.WriteLine(row[1]);
- }
- }
- }
阅读全文及评论...因为测试一些东东,需要一些数据,因此就写了个增加数据的东东。这个一来能满足写入的数据,二来能顺便测试一下Oracle的性能。
- declare
- maxrecords constant int:=1000000;
- i int :=1;
- Begin
- for i in 1..maxrecords loop
- Insert into TEST_TEMP(NAME) values (SYS_GUID());
- end loop;
- dbms_output.put_line(' OK ');
- commit;
- end;
- --100W 325.969 s
服务器环境:
linux as 4 + oracle 10g 内存1G,Xeon3.0G 处于Windows平台下的虚拟机。
阅读全文及评论...- CREATE OR REPLACE PROCEDURE TEST_TEMP_INSERT_SP (
- V_NAME string,
- V_ID out int
- )
- AS
- BEGIN
- INSERT INTO TEST_TEMP(
- NAME
- )VALUES(
- V_NAME
- )
- returning ID into V_ID ;
- COMMIT;
- END;
ID是用序列和触发器来生成的。
阅读全文及评论...- create or replace trigger TRI_PrintTest
- before delete or insert or update on TEST_EXAM --触发事件
- for each row -- 每修改一行都需要调用此过程
- begin
- dbms_output.put_line(:new.IDNEW); --IDNEW字段更新后的值
- dbms_output.put_line(:old.IDNEW); --IDNEW字段更新前的值
- end;
原IDNEW字段是1时,
使用
update TEST_EXAM set IDNEW=5 where SN='5454';
则打印结果为:
5
1
阅读全文及评论...
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
阅读全文及评论...
订阅地址
