易截截图软件、单文件、免安装、纯绿色、仅160KB

Oracle Parameter

在实际开发中,经常会需要对数据库进行访问,最常见的开发方法就类似:
  string sql = "select * from table1 where name = '" + name + "'";
  这种方式有被注入攻击的危险
  所以解决方案有2种:
  1、改成:string sql = "select * from table1 where name = '" + name.Replace("'","''") + "'"; // 替换一个单引号为两个单引号
  2、使用参数化形式,如在Oracle中,用如下方式执行:
  string sql = "select * from table1 where name = :vName";
  OracleParameter para = new OracleParameter("vName", OracleType.VarChar);
  para.Value = name;
  OracleConnection con = new OracleConnection (constr);
  con.Open();
  OracleCommand com = con.CreateCommand();
  com.CommandText = sql;
  com.Parameters.Add(para);
  com.ExecuteReader();
  如此看来,使用参数化的形式复杂的许多,用替换的方式简单的多
  所以我一直以来都是用替换的方式来处理,昨天发现了用参数的另一个好处
  才知道,使用参数化形式还可以提高Oracle的性能(不知道SqlServer有没有类似的好处)
  通过分析SQL语句的执行计划优化SQL
  共享sql语句
  为了不重复解析相同的SQL语句(因为解析操作比较费资源,会导致性能下降),在第一次解析之后,ORACLE将SQL语句及解析后得到的执行计划存放在内存中。这块位于系统全局区域SGA(system global area)的共享池(shared buffer pool)中的内存可以被所有的数据库用户共享。因此,当你执行一个SQL语句(有时被称为一个游标)时,如果该语句和之前的执行过的某一语句完全相同,并且之前执行的该语句与其执行计划仍然在内存中存在,则ORACLE就不需要再进行分析,直接得到该语句的执行路径。ORACLE的这个功能大大地提高了SQL的执行性能并大大节省了内存的使用。使用这个功能的关键是将执行过的语句尽可能放到内存中,所以这要求有大的共享池(通过设置shared buffer pool参数值)和尽可能的使用绑定变量的方法执行SQL语句。
  当你向ORACLE 提交一个SQL语句,ORACLE会首先在共享内存中查找是否有相同的语句。这里需要注明的是,ORACLE对两者采取的是一种严格匹配,要达成共享,SQL语句必须完全相同(包括空格,换行等)。
  下面是判断SQL语句是否与共享内存中某一SQL相同的步骤:
  1. 对所发出语句的文本串进行hashed。如果hash值与已在共享池中SQL语句的


相关文档:

ORACLE程序包

程序包
 
包主体/规范名字一样
包主体/规范中的对应参数必须类型及名字一样
只能使用强类型的REF游标
 
创建程序包规范
create or replace package my_pack
is
       procedure find_emp_proc(eno emp.empno%type);
       function fin ......

ORACLE数据库对象——同义词、序列、视图

ORACLE数据库对象
——同义词、序列、视图
同义词:同义词是现有对象的别名
简化SQL语句
隐藏对象的名称和所有者
提供对对象的公共访问
 
同义词分为私有同义词和公有同义词
私有同义词只能在其模式内访问,且不能与当前模式的对象同名。
公有同义词可被所有的数据库用户访问。
 
以 SYS 用 ......

读取oracle blob字符串

OleDbConnectioncon=newOleDbConnection(cnnstr);
try
{
con.Open();
}
catch
{}
OleDbCommandcmd=newOleDbCommand(strSQL,con);
System.Data.OleDb.OleDbDataReaderdr=cmd.ExecuteReader();
while(dr.Read())
 
{
stringdd=dr["gggg"].ToString();
byte[]ooo=(byte[])dr["hhhh"];
stringstr;
str=Sys ......

查看、修改oracle字符集,查看oracle版本

方法一:
1)   查看服务器端字符集:                                         &nbs ......

ORACLE用LIMIT实现类似分页

练习了ORACLE类似的分页,目的:ORACLE的LIMIT使用
declare
type name_arrary_type is varray(20) of varchar2(10);
name_arrary  name_arrary_type;
rowss int:=&输入页记录数;
dpno int:=&输入部门号;
v_count int:=0;
cursor  emp_cursor(dpno int) is select ename from emp where deptno=dpno; ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号