2013年9月26日

摘要: 当输入一个查询,希望得到与之相一致的返回结果集。如果输入一个SQL语句来更新几百条记录,而其中一个数据行的更新失败了,希望整个过程就失败,所有的数据行返回到更新前的状态。如果更新成功了并且你将它提交给了数据库,希望自己的修改对其他用户可见并被保留在数据库中,至少直到数据再次被其他人更新。希望读取数据时,不会阻止另一个会话的写入;反之亦然。关系型数据库都是要进行事务处理的。设计实物并进行编码的方式将会影响应用数据的完整性和一致性。如果没有清楚定义事务的边界,应用可能会出现一些意料之外的行为。当多个用户从中获取信息并修改其中的信息的时候,事务设置还会影响系统性能。事务设置不好可扩展性也会受到很大的 阅读全文

posted @ 2013-09-26 16:05 Keep Moving... 阅读(410) 评论(0) 推荐(0)

摘要: 动态字符串必须是一个有效的PL/SQL块。这个块必须以DECLARE或者BEGIN关键字开始,用END关键字和分号结束。如果字符串不是以分号结尾的,是不会被识别成PL/SQL块。在动态块中,我们只能访问属于全局作用范围的PL/SQL代码元素。动态PL/SQL块是局部包围块的作用范围之外执行。在动态PL/SQL块中抛出的错误可以在运行EXECUTE IMMEDIATE语句的局部块中捕获并处理。-- 执行动态PL/SQL的小工具PROCEDURE dynPLSQL(blk IN VARCHAR2)ISBEGIN EXECUTE IMMEDIATE 'BEGIN ' || RTR.. 阅读全文

posted @ 2013-09-26 11:59 Keep Moving... 阅读(195) 评论(0) 推荐(0)


2013年9月25日

该文被密码保护。 阅读全文

posted @ 2013-09-25 21:27 Keep Moving... 阅读(1) 评论(0) 推荐(0)

摘要: 动态SQL是指在运行时刻才构建执行的SQL语句静态SQL指的是在代码编译时刻就已经包含在代码中的那些已经充分明确的固定的SQL语句动态PL/SQL 是指整个PL/SQL 代码块都是动态构建,然后再编译执行的在PL/SQL中用静态SQL只能执行查询以及DML语句如果想创建一个表或删除一个索引,动态SQL可以可以使用DBMS_SQL包执行动态SQL一种执行动态构建的SQL语句的方法:原生态SQL(DNS)======================================DNS语句:简单与DBMS_SQL不同,后者需要编写一打程序代码,以及很多规则要遵守DNS是通过一个新的语句无缝集成到P 阅读全文

posted @ 2013-09-25 14:42 Keep Moving... 阅读(325) 评论(0) 推荐(0)


2013年9月24日

摘要: -- PLSQL记录-- 与3GL中的记录结构相似,与数据库表是两回事-- 是一个方便的途径FETCH一些行FROM一个表来进行相关处理declare type emp_record_type is record (empno number not null:=100, ename emp.ename%type, job emp.job%type); -- 也可以利用原有的表结构:EMP_RECORD EMP%ROWTYPE emp_record emp_record_type;begin null;end;/-- 显式游标 - 操纵步骤如下:声明游标、打... 阅读全文

posted @ 2013-09-24 16:33 Keep Moving... 阅读(161) 评论(0) 推荐(0)

摘要: -- PL/SQL 块结构DECLARE --- 可选 变量声明定义BEGIN ---- 必选 SQL 和PLSQL 语句EXCEPTION ---- 可选 错误处理END;---- 必选 declare vjob varchar(9); v_count number:=0; vtotal date:=sysdate +7; c_tax constant number(3,2):=8.25; v_valid boolean not null:=true;begin select sysdate into vtotal fr... 阅读全文

posted @ 2013-09-24 15:09 Keep Moving... 阅读(147) 评论(0) 推荐(0)


2013年9月23日

摘要: --不加分组函数修饰的列必定要出现在GROUP BY里SELECT title, SUM(salary) PAYROLLFROM s_empWHERE title NOT LIKE ’VP%’GROUP BY title;--就是先按照DEPT_ID分组,当DEPT_ID相同的时候,再按TITLE分组,而COUNT(*)以合成的组计数。顺序对结果有决定性的影响。SELECT dept_id, title, COUNT(*)FROM s_empGROUP BY dept_id, title;-- 应在GROUP BY 后面加上HAVING AVG(salary) > 2000;因为是用来限 阅读全文

posted @ 2013-09-23 15:49 Keep Moving... 阅读(182) 评论(0) 推荐(1)


博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3