使用PRO C预编译时,如何在PL/SQL块用调用存储过程?
存储过程prc_selTest()定义如下:
CREATE OR REPLACE PROCEDURE prc_selTest (inPhone IN CHAR DEFAULT 'null', cityName OUT CHAR) AS
...
目的是输入手机号,查询对应的归属城市,在SQL PLUS中调用示例如下:
-------------------------------------------------------------------------
SQL> list
1DECLARE
2 outValue VARCHAR(20) := '999';
3BEGIN
4 prc_selTest('1330415',outValue);
5 DBMS_OUTPUT.PUT_LINE('cityName:' || outValue);
6* END;
SQL> /
cityName:丹东
PL/SQL procedure successfully completed.
-------------------------------------------------------------------------
在PRO C源文件中的对应PL/SQL块如下:
-------------------------------------------------------------------------
其它代码...
EXEC SQL BEGIN DECLARE SECTION; /*SQL局部变量描述*/
charphoneNum[15];
charcityName[255];
EXEC SQL VAR phoneNum IS STRING(15);
EXEC SQL VAR cityName IS STRING(255);
EXEC SQL END DECLARE SECTION;
其它代码...
EXEC SQL EXECUTE
DECLARE
outValue VARCHAR(20) := '999';
BEGIN
/*********屏蔽该段代码后,预编译正常*********/
prc_selTest(
honeNum,outValue);
/*********屏蔽该段代码后,预编译正常*********/
:cityName:=outValue;
END;
END-EXEC;
其它代码...
-------------------------------------------------------------------------
编译错误提示如下:
jl-supp:/home/jl-supp/proc>proc iname=test.pc SQLCHECK=SEMANTICS
Pro*C/C++: Release 8.1.5.0.0 - Production on Thu Jan 27 16:30:19 2005
(c) Copyright 1999 Oracle Corporation.All rights reserved.
System default option values taken from: /usr/oracle8/precomp/admin/pcscfg.cfg
Error at line 64, column 4 in file test.pc
prc_selTest(
honeNum,outValue);
...1
PLS-S-00201, identifier 'PRC_SELTEST' must be declared
Error at line 64, column 4 in file test.pc
prc_selTest(
honeNum,outValue);
...1
PLS-S-00000, Statement ignored
Semantic error at line 60, column 3, file test.pc:
DECLARE
..1
PCC-S-02346, PL/SQL found semantic errors
jl-supp:/home/jl-supp/proc>
请问谁知道如何在PL/SQL块用调用存储过程,最好给一个例子,谢谢。 |