PLSQL基础研讨.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PLSQL基础研讨

【练习】 创建一个PL/SQL块,根据某个员工的工资,计算给该员工的奖金。 通过读取雇员编号并获得其工资,根据工资等级不同,计算该员工的奖金,并设置该员工的奖金。 奖金等级如下: 如果该雇员工资小于1000美元,则该雇员的奖金为工资的10%。 如果该雇员工资在1000~1500美元之间,则该雇员的奖金为工资的15%。 如果该雇员工资大于1500美元,则该雇员的奖金为工资的20%。 如果该雇员工资为NULL,则该雇员的奖金为0。 指定字符和日期值的替代变量 在WHERE子句中,日期和字符值必须用单引号扩起来,这个规则同样适用于替代变量。 为了避免在运行时输入引号,事先在SQL语句中将替代变量用单引号扩起来。 上面显示的查询是为了得到从事用户所输入的工作的雇员的姓名、部门编号及年薪。 注意:您同样可以使用类似UPPER和LOWER这样的函数 ,使用UPPER(‘job_title’)的话,用户则不用必须以大写形式输入工作名称。 在运行时指定列、表达式及文本 您不仅可以在SQL语句的WHERE子句中使用替代变量,而且替代变量还可以用于代替列名、表达式或文本。 举例 显示符合任意条件的雇员的编号以及其它任意的列 如果您没有给替代变量输入一个值,那么执行上面语句的时将产生错误。 SQL SELECT empno, column_name 2 FROM emp 3 WHERE condition; Enter value for column_name: job Enter value for condition: deptno = 10 EMPNO JOB --------- --------- 7839 PRESIDENT 7782 MANAGER 7934 CLERK 在运行时指定列、表达式及文本(续) 上面的例子显示雇员编号、姓名、工作名称以及运行时用户所指定的其它任意列,用户同样可以指定检索条件和排序方式 SQL select fieldname2 from dual;? 输入 fieldname2 的值:? sysdate? 原值??? 1: select fieldname2 from dual? 新值??? 1: select sysdate from dual SYSDATE? --------------? 07-9月 -09 第一次和一样,当你第二次输入select fieldname2 from dual;? 这时不需要再输入 fieldname2 的值:? 就直接用上次的值了。因为fieldname2的值已经保存在session里了。 当你不想使用这个变量名的时候, 你可以用undefine 命令解除他 如下? SQL undefine fieldname2; 再次输入? SQL select fieldname2 from dual;? 输入 fieldname2 的值:? 又开始然你输入了,因为值已经清掉了。 CASE语句中包含一个条件选择器,条件选择器的表达式可以是复杂的表达式,例如可包含一个函数的调用。选择器后面有多个WHEN子句,他们被连续地检查,选择器的值决定哪条WHEN子句将被执行,如果选择器的值等于某个WHEN子句表达式的值,则选择对应的WHEN子句被执行,并且最后由CASE语句返回一个执行结果。 上面的例子,CASE子句中的条件搜索器为变量v_grade,该变量的值来自替代变量,根据用户的输入CASE语句选择与之对应的WHEN子句执行,并返回一个结果给变量v_appraisal。 【注意】:不管CASE表达式的哪部分执行,都要始终返回相同的数据类型。 搜索CASE语句没有条件选择器,同时,其WHEN子句中包含了一个产生布尔值的搜索条件。如果搜索到某个WHEN子句中的条件为TRUE,则执行该WHEN子句,执行了某条WHEN子句后便跳出整个CASE语句。如果没有搜索条件值为TRUE的WHEN子句,则执行ELSE子句,不过ELSE子句是可选的,如果忽略了ELSE子句,PL/SQL则加上隐含的ELSE语句:ELSE RASIE CASE_NOT_FOUND; * 答案: (1)死循环 (2)输出0~9 (3)输出1 * * * * 答案: 不能。因为只有循环自身才能隐含地递增循环计数器的值。 ORACLE10G没有continue,11g有continue * 答案: 不一样。输出1~10所有整数。 (1)执行下列语句向EMP表插入一新记录。 Insert into emp Values(8000, ‘DOE’, ‘CLERK’, 7698, SYSDATE, NULL, NULL, 10); 注意

文档评论(0)

骨干 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档