如何从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;