求教大侠,需要一个ORACLE高手存储过程返回记录集,我用的客户端是VB6的, 找了很久,看了很多,不太看得懂,
希望论坛的大哥,帮帮忙。
解决方案 »
- SQL高手进~~~~~~~~~~~~~~~~~~~~~~~!!!!!!
- oracle 存储过程 如何按顺序执行
- oracle +PHP 查询问题
- 求助:请问在SQLPUS下有什么方法可以对命令的用法查询?
- 如何计算两个时间之间相差月数?
- 在sqlplus中同时执行两条查询语句命令怎么写啊?
- 数据库瘫痪后,怎样从ORACLE文件夹中找到自己建的表
- 临时表空间创建的时候分配了1G的空间,为什么不久就占用了590M的空间,也不上涨也不回收,是为什么?
- 问一个oracle数据类型转换的问题
- Windows下面使用OCCI报错(error C2995),请各位大侠帮忙!紧急!!
- sqlplus 怎样看用户拥有的表?(记得有个视图显示啊)
- oracle 新手,有没有像SQLserver的图形操作界面
CREATE OR REPLACE PROCEDURE userinfo_proc(i_address VARCHAR2, o_cur OUT SYS_REFCURSOR)
IS
sqlstr VARCHAR2(200); -- 定义变量,用以存放SQL语句
BEGIN
sqlstr := 'SELECT Id, Name, Sex, Age, Address FROM userinfo WHERE Address = :i_address'; -- 给SQL变量赋值,其中 :i_address 是绑定变量,以提高执行效率!
OPEN o_cur FOR sqlstr USING i_address; -- 给游标变量赋值
END;
/set serveroutput on;
var c_cur refcursor;
exec userinfo_proc('北京',:c_cur);
print c_cur;
不过你也可以写SQL来代替存储过程的啊,你如果不会用VB6来调用返回结果集的存储过程,那你还是直接写SQL而不必写存储过程吧。
——按你的情况,你也可以把存储过程的结果集合的数据写到数据库的临时表,然后你VB6直接读取临时表里面的数据就可以了~这个还是要看你的系统的业务规则来顶的~
存储过程不难啊,,,ORACLE跟SQL SERVER确实返回结果集的存储过程有点不一样,ORACLE必须建立一个包——包头和包体,包头是一些定义,包体是一些实现,返回在包头里面定义的游标,然后你在VB6里面调用这个游标结果集就可以了~
GOOGLE上面应该很多例子的,如果不懂,可以到VB下去问怎么调用。此
礼!
我有一个查询语句,在视图是可以用的,是阿泰指导写的, 举例子: create or replace view test as select × from aaa where 重量 <50, 实际上视图比这个复杂多了, 然后我在VB里用TEST这个视图,但是视图用WRAP不能加密,但存储过程可以加密, 所以我把这个视图修改成存储过程,用这个存储过程返回像视图TEST这样的记录集, 请问这个存储过程该怎么写呢?
create table test1 --建立测试表
(
tname varchar2(10),
tclass varchar2(10),
tscore int
);insert into test1 select '无念','一年级','98' from dual union all --插入测试数据
select '无缘','二年级','99' from dual union all
select '无尘','三年级','95' from dual union all
select '无法','四年级','59' from dual;
commit;
create or replace package tpk --包头
is
type tcur is ref cursor; --定义返回的结果集
procedure t_p(t_name varchar2 , t_cur out tcur);--定义存储过程
end;
/create or replace package body tpk --包体
is
procedure t_p(t_name varchar2 , t_cur out tcur)--存储过程的实现
is
begin
open t_cur for select * from test1 where test1.tname =t_name;--游标记录结果集
end t_p;
end tpk;
/--在PL/SQL DEVELOPER里面测试一下吧,存储过程是在包体中的 调用存储过程要写包体的名称,例如tpk.t_p如此
加密的意义不大,你只不过不想别人看到你的实现?现在制作报表,可以用制作报表的单独工具啊,水晶报表好像已经N年了吧——有很多出名的报表工具,以及ETL工具。利用这些平台来开发报表的话,可以省去很多存储过程的,而且可能效率上也会有提高。--不过不知道你要开发的是虾米样的报表,如果只是简单的,写几个SQL就可以了,根本不用加密啊,要加密啊在文本上对称加密读写就可以~~(ORACLE不知道有没有像SQL的视图加密),你也可以考虑把加密的SQL存放在数据库里面的。==方法很多吧,偶只是胡乱说一下,哈,希望对你有点帮助