菜鸟问题:如何在应用程序中调用一个pl/sql的函数/过程

ZHANGGANGG 2003-02-22 06:14:36
比如说一个test过程,我在sql*plus中可以用exec test;来调用调试,但是如何可以在应用程序中调用,比如vb,web应用程序中调用呢?谢谢
...全文
40 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
moyaxu 2003-03-03
  • 打赏
  • 举报
回复
gz
ZHANGGANGG 2003-02-24
  • 打赏
  • 举报
回复
我找到错误了
cm1.CommandText = "{call pkg_test.get(?,{resultset 0, myrctype})}"
其中的myrctype 应该是在过程中定义的变量名,把它换成你上述pkg_test.get中的p_rc就可以了
谢谢你。
beckhambobo 2003-02-23
  • 打赏
  • 举报
回复
问题一:
name varchar;这句出了问题,要给长度。
修改为
name varchar2(20);

问题二:
要想返记录集不可这样,以下提供返回记录集的一个过程,要用到包体,而且要通过参数返回记录集
CREATE OR REPLACE PACKAGE pkg_test
AS
TYPE myrctype IS REF CURSOR;

PROCEDURE get (p_id NUMBER, p_rc OUT myrctype);
END pkg_test;
/

CREATE OR REPLACE PACKAGE BODY pkg_test
AS
PROCEDURE get (p_id NUMBER, p_rc OUT myrctype)
IS
sqlstr VARCHAR2 (500);
BEGIN
IF p_id = 0 THEN
OPEN p_rc FOR
SELECT ID, NAME, sex, address, postcode, birthday
FROM student;
ELSE
sqlstr :=
'select id,name,sex,address,postcode,birthday
from student where id=:w_id';
OPEN p_rc FOR sqlstr USING p_id;
END IF;
END get;
END pkg_test;
/


ZHANGGANGG 2003-02-23
  • 打赏
  • 举报
回复
谢谢你,虽然还没有调试出来,但还是要很感谢你给我提供的资料。
在调试的时候,到set rs =cm1.execute时,告诉我未找到pl/sql过程的变量名,可是我查了一下,没有设置错误啊?能再帮忙解释一下吗?
ZHANGGANGG 2003-02-22
  • 打赏
  • 举报
回复
一个很简单的过程:
CREATE OR REPLACE PROCEDURE "MYTEST" is
name varchar;
begin
select operator_name into name from operator where operator_id=1;

end mytest;

但是在执行到:set rs=cm1.execute后,要取出rs里的字段值,为什么取不出,它告诉我:对象已被关闭,操作不被允许??什么原因?
beckhambobo 2003-02-22
  • 打赏
  • 举报
回复
asp:

<%@LANGUAGE="VBSCRIPT"%>
<!--#include file="Connections/conn.asp" -->
<%
set cm1 = Server.CreateObject("ADODB.Command")
cm1.ActiveConnection = MM_conn_STRING
cm1.CommandType = 1
cm1.CommandTimeout = 0
cm1.Prepared = true
cm1.CommandText = "{call pkg_test.get(?)}"//(?,{resultset 0, myrctype})
set para = cm1.Parameters
para.Append cm1.CreateParameter("p_id",3,1,,1)

set rs = Server.CreateObject("ADODB.Recordset")

set rs=cm1.Execute
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>中山大学附属第五医院</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<LINK
href="images/med.css" type=text/css
rel=stylesheet>
</head>
<body bgcolor="#B2CFE4" text="#000000">
<%
while not rs.eof
response.write rs("name")
rs.movenext()
wend %>

</body>
</html>
<%
rs.close
cm1.ActiveConnection.Close
set cm1=nothing
%>

vb:
http://expert.csdn.net/Expert/topic/903/903782.xml?temp=.3816034
本课程根据讲师十多年在世界500强外企的生产环境SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货分享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验SQL Server均已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL Server(SQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员均可下载。     

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧