|
|
51CTO旗下网站
|
|
移动端

2.4.2 执行存储的程序

《Oracle PL/SQL程序设计(第6版)(上下册)》第2章创建和运行PL/SQL代码,本章将展示如何在一个最基本的层面上(使用SQL*Plus)完成上述任务,同时对这些细小差别进行大致的讲述。本节为大家介绍执行存储的程序。

作者:方鑫 译来源:人民邮电出版社|2017-09-06 20:09

2.4.2 执行存储的程序

我们已经看到过两种调用存储程序的方法了:封装在一个PL/SQL代码块中,或执行SQL*Plus的EXECUTE命令。我们还可以在一个存储程序中调用另一个存储程序。例如,我们可以在任意使用整数表达式的地方使用“wordcount”函数。下面是一个简短的演示,看看我是如何用一个奇怪的输入(CHR(9)是ASCII“tab”字符)来对函数“wordcount”进行测试的:

  1. BEGIN  
  2. DBMS_OUTPUT.PUT_LINE('There are ' || wordcount(CHR(9)) || ' words in a tab');  
  3. END;  

我把“wordcount”函数当作表达式的一部分,而表达式的整体又是DBMS_OUTPUT.PUT_LINE的参数。在这里,PL/SQL会自动把整数转换为字符串,然后和其他两个文字表达式拼接起来,结果如下:

  1. There are 0 words in a tab 

我们也可以在SQL语句内调用多个PL/SQL函数。下面是如何使用“wordcount”函数的一些示例。

在SELECT语句中使用函数,计算数据表中某一列所含的单词个数:

  1. SELECT isbn, wordcount(description) FROM books; 

使用ANSI兼容的CALL语句,将函数的输出绑定到一个SQL*Plus变量,然后显示结果:

  1. VARIABLE words NUMBER  
  2. CALL wordcount('some text') INTO :words;  
  3. PRINT :words 

与上例相同,但是执行的是一个远程数据库的函数,指向这个远程数据库的连接叫作test.netyork.ora.com。

  1. CALL wordcount@test.newyork.ora.com('some text') INTO :words; 

函数的所有者是schema bob,我们用其他拥有相应权限的用户登录,然后运行这个函数:

  1. SELECT bob.wordcount(description) FROM books WHERE id = 10007

喜欢的朋友可以添加我们的微信账号:

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

游戏关卡设计

《半条命》作者倾心写就 暴雪总裁等业内专家强力推荐 盛大公司专业团队翻译 一起来创造引人入胜的游戏体验吧! 任何精彩游戏的核心部分...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊