vb调用oracle存储过程
Ⅰ 我在Oracle里写了个存储过程。在程序里调用时为什么找不到OracleType
估计你存储过程中没有定义sex及它的类型,要不就是你sex 类型定义错误 不属于oracle数据类型
你可以重新设置下它的类型用个varchar(4)
Ⅱ oracle存储过程里调用存储过程
存储过程里直接新起一行写b(c,d);就可以,不在存储过程中单独执行时要call b(c,d);
Ⅲ 调用oracle存储过程问题,exec和call的区别
你这种打印就不能输出了,应该用传递参数的方式,将返回错误信息,然后将错误信息显出出来或者像JS一样 弹出来
Ⅳ VFP中调用Oracle的存储过程
VFP由于其通俗 易用 深受广大开发人员的欢迎 但其安全性与稳定性却不十分完善 而Oracle在此方面的优点是有口皆碑的 两者结合 能开发出高效 安全和稳定的应用系统 有关在VFP中调用Oracle存储过程方法的资料较少 下面就此举一简单例子 希望起到抛砖引玉的作用 此方法适用于用VFP作前端开发工具 Oracle作后端数据库的C/S开发方法 在Oracle端 建有如下表和存储过程 表gzb如下 sql〉select * from gzb; IDGZ 存储过程如下 create or replace procere p_update—gzb (p—id in number p—gz in number) as begin update gzb set gz=p—gz where id=p—id; mit; end; 在前端(VFP端) 假设已建立好与Oracle的链接′vfplink′(具体步骤可以参阅VFP的帮助文档) 打开链接 nhand=sqlconnect(′vfplink′) &&nhand为返回的链接句柄 调用Oracle的存储过程p—update—gzb: 此存储过程有两个参数 分别是id与gz 我们设要更新id为 的员工的gz为 则可以执行 sqlexec(nhand ″{call p—update—gzb( )}″) 如果执行成功 则返回 失败则返回- 我们可以执行以下命令验证存储过程是否成功执行了 sqlexec(nhand ′select * from gzb′) brow 结果是 IDGZ 可见 Oracle的存储过程p—update—gzb已经成功执行了 最后 别忘了断开连接 disconnect(nhand) 以上例子在VFP Oracle 环境下运行通过 lishixin/Article/program/Oracle/201311/16667
Ⅳ oracle中,一个存储过程怎么调用另一个存储过程这两个存储过程都带有各自的参数。直接调用似乎不行。
已经有人回答的很专业了!
原则就是:你要调用哪个存储过程,就要为该存储过程传入它需要的参数
它定义的几个,你就传入几个
当然参数的类型要对应上。
还有就是如果一个存储过程中定义了out类型的参数,当你在调用它的时候,这个out类型的参数也要参入,看它定义的是什么类型的out参数。然后定义一个该类型的变量,传入进去,用于接收存储过程返回的值。然后用这个值,去做下面的逻辑。
Ⅵ oracle procere存储过程
OR REPLACE PROCEDURE 存储过程名字( 参数1 IN NUMBER, 参数2 IN NUMBER ) IS/AS变量1 INTEGER :=0;变量2 DATE;BEGIN.END 存储过程名字2、SELECT INTO STATEMENT
将select查询的结果存入到变量中,可以同时将多个列(字段)存储到多个变量中,必须有一条记录,否则抛出异常(如果没有记录,抛出NO_DATA_FOUND)
例子:
BEGIN SELECT col1,col2 into 变量1,变量2 FROM typestruct where xxx; EXCEPTION WHEN NO_DATA_FOUND THEN ROLLBACK; RAISE; END;3、IF判断
IF 条件1 THEN Do Someting ELSIF 条件2 THEN Do Someting ELSIF 条件3 THEN Do Someting ELSE Do SometingEND IF;4、while循环
WHILE V_TEST=1 LOOP BEGIN XXXX END; END LOOP; 5、变量赋值
V_TEST := 123; 6、用for in使用cursor(游标)
. IS CURSOR cur IS SELECT * FROM xxx; BEGIN FOR cur_result in cur LOOP BEGIN V_SUM :=cur_result.列名1+cur_result.列名2 END; END LOOP; END; 7、用pl/sql developer debug
连接数据库后建立一个Test Window
在窗口输入调用SP的代码,F9开始Debug,CTRL+N单步调试
注意事项:
1)存储过程参数不带取值范围,in表示传入,out表示输出;
2)变量可带取值范围,后面接分号;
3)在判断语句前最好先用count(*)函数判断是否存在该条操作记录
4)用select.into.给变量赋值
5)在代码中抛出异常用RAISE;通常的用法:
EXCEPTION WHEN OTHERS THEN ROLLBACK; RAISE;/*异常分很多类,如NO_DATA_FOUND。OTHERS处本应该写异常名称,如果不想把异常分得那么细,可以笼统一点用OTHERS来捕获,即所有异常均用OTHERS来捕获。WHEN OTHERS THEN 表示是其它异常。RAISE表示抛出异常,让User可以看到。*/
6)AS/IS的区别
在试图(VIEW)中只能用AS不能用IS
在游标(CURSOR)中只能用IS不能用AS
7)输出变量赋值有两种,一种是直接:=,还有一种就是SELECT INTO
8)显示调试信息
a.存储过程中在必要的位置添加
DBMS_OUTPUT.put_line(‘HI‘);
b.打开DBMS_OUTPUT
show serveroutput;set serveroutput on;
9)删除PROCEDURE
DROP PROCEDURE procere_name;
oracle procere存储过程