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

PL/SQL游标变量的调用与作为输出参数的应用

      今天有个学生问我调用包里面具有游标类型的输出参数,可是在用PL/SQL程序调用的时候居然报出参数个数或类型错误的异常信息,于是自己也试了一下,果然是出错了。然后就自己琢磨了一下、查查资料和问问同事,原来问题是很简单的,先看一下程序的结构代码:
CREATE OR REPLACE PACKAGE Pkg_Student
IS
TYPE StudentType IS REF CURSOR RETURN TB_STUDENT%ROWTYPE;
PROCEDURE Pro_student
(
 pi_ClassId IN TB_STUDENT.CLASSID%TYPE,
 Po_student OUT StudentType
);
END Pkg_Student;
--实现包体代码
CREATE OR REPLACE PACKAGE BODY Pkg_Student
IS
PROCEDURE Pro_student
(
 pi_ClassId IN TB_STUDENT.CLASSID%TYPE,
 Po_student OUT StudentType
)
AS
BEGIN
  IF pi_ClassId=1 THEN
   OPEN Po_student FOR SELECT * from TB_STUDENT WHERE TB_STUDENT.CLASSID=1;
  ELSIF pi_ClassId=2 THEN
   OPEN Po_student FOR SELECT *from TB_STUDENT WHERE TB_STUDENT.CLASSID=2;
  ELSE
   OPEN Po_student FOR SELECT *from TB_STUDENT WHERE TB_STUDENT.CLASSID=3;
  END IF;
END;
END Pkg_Student;
--执行调用包里面的存储过程
DECLARE
 TYPE StudentType IS REF CURSOR RETURN TB_STUDENT%ROWTYPE;
 v_student StudentType;
 v_ClassID TB_STUDENT.CLASSID%TYPE:=1;
BEGIN
 Pkg_Student.Pro_student(v_ClassID,v_student);
END;
像上面那样执行就会出现参数个数或类型错误;于是,纠正了一下代码如下:
DECLARE
 v_student Pkg_Student.StudentType;
 v_ClassID TB_STUDENT.CLASSID%TYPE:=1;
BEGIN
 Pkg_Student.Pro_student(v_ClassID,v_student);
END;
原因如下:
   1、StudentType本身是在包里面声明和应用,其作用域也在包内部而已;
   2、若外部程序要调用包里面具有游标类型参数的过程或函数时,那么必须在外部显示调用包
          里面的游标声明,而不是在外面重新定义一个游标声明和游标变量。而且注意的是游标变量本身也是动态的,是一个引用类型,不依赖于工作区。
好了,对于这个问题的分析就到这边了.........希望对别人有帮助。(帮助他人就是帮助自己)


相关文档:

SQL MINUS的用法


< type="text/javascript">
document.body.oncopy = function() {
if (window.clipboardData) {
setTimeout(function() {
var text = clipboardData.getData("text");
......

sql server和oracle的区别

1.Oracle为客户端开启会话有两种方式:共享服务和专用服务。在专用服务情况下,监听器为连接请求创建新进程(Unix环境下是Process,Windows下我想应该是Thread吧);共享服务情况下,监听器将客户请求交给Dispatcher,由Dispatcher安排多客户的作业。SQL Server在默认情况下自动为客户端连接创建线程,当有非常多的客 ......

SQL Server 2000 各种对象的最大值(数量或大小)

SQL Server 2000 各种对象的最大值(数量或大小)
管理的一个数据库大小将近10G,开始担心数据库会不会过大,查询SQL Server的联机丛书后发现自己的担心真的是多余的。
SQL Server 2000数据库文件大小(数据、日志)最大可以支持 32 TB 的文件
截取SQL Server 2000联机丛书中的最大容量说明方便大家查阅。
SQL Server数据 ......

SQL Server Out Put Excel File

SQL Server Out Put Excel File
在 SQL Server中, 导出EXCEL 文件, 用到 bcp.exe
 
 bcp  导出的本质是纯文本文档,
若数据含有中文,请导出到中文版EXCEL,或TXT文档等, 否则乱码....
用TXT 打开英文版EXCEL,也可以,
 
导出 数据到C:\authors.xls, 若文件存在则重写文件, 不存在则创建文件
  ......

sql 把表导成.TXT文件

sql 代码:
---------------------------------------------------------
/*
  a        表名
  如果在sql 查询分析器当中出现
  " SQL Server 阻止了对组件 'xp_cmdshell' 的 过程'sys.xp_cmdshell' 的访问,因为此组件已作为此服务器安全配置的一部分而被关� ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号