回答

收藏

从sqlplus调用存储过程

技术问答 技术问答 212 人阅读 | 0 人回复 | 2023-09-13

如何从sqlplus调用存储过程?
9 O8 C" h  a  X' _6 ~: q我有一个程序:7 F; F* V) S# ?
Create or replace procedure testproc(parameter1 in varachar2,parameter2 out varchar2)beginDo somethingend;我试过exec testproc(12,89):返回错误
) s% w4 Z& O8 u5 c+ g; |+ V8 y4 `                                                               
. k2 c( H( }+ s- X8 w, M7 I4 P    解决方案:                                                               
7 o" O; }, Z; @( l" B                                                                过程的第二个参数是一个OUT参数-它的值将分配到过程完成时传递的变量。因此,您不能为此参数使用文本值。
2 a# g$ g7 ?  G* [& k: J& W/ A您可以在SQLPlus在提示符下声明绑定变量并使用该变量:3 C/ ~2 z: M8 C+ ~% N
-- Declare bind variableVARIABLE x NUMBER-- If necessary,initialize the value of x; in your example this should be unnecessary-- since the value of the second parameter is never readEXEC :x := 1-- Call the procedureEXEC testproc(12,:x)-- Print the value assigned to the bind variablePRINT x另外,你可以使用匿名PL / SQL块:1 A  d2 `8 M/ _1 V, H# G; t
-- Activate client processing of dbms_output bufferSET SERVEROUTPUT ON-- In anonymous block,declare variable,call procedure,print resulting valueDECLARE  x NUMBER;BEGIN  testproc(12,x);  dbms_output.put_line( x );END;
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则