Oracle 如何调用过程
编辑:Oracle 如何调用过程,oracle,plsql,oracle11g,Oracle,Plsql,Oracle11g,编辑: CREATE OR REPLACE PROCEDURE GET_SINGLE_CUSTOMERINFO( P_ID IN NUMBER, P_AGE OUT NUMBER,
CREATE OR REPLACE PROCEDURE GET_SINGLE_CUSTOMERINFO(
P_ID IN NUMBER,
P_AGE OUT NUMBER,
P_OCCUPATION OUT VARCHAR2,
P_LASTSTATEMENT OUT VARCHAR2
) AS
BEGIN
SELECT AGE,
OCCUPATION,
LASTSTATEMENT
INTO P_AGE,
P_OCCUPATION,
P_LASTSTATEMENT
FROM crossallcustomers
WHERE crossallcustomers.id = P_ID;
END;
第1行错误:ORA-06550:第1行第7列:PLS-00306:错误号码
或调用“GET_SINGLE_CUSTOMERINFO”ORA-06550时的参数类型:
第1行第7列:PL/SQL:语句被忽略*
通过只传递两个参数,您正在调用一个具有四个参数且没有默认值的过程 以下是如何调用过程的示例:
SET SERVEROUTPUT ON;
SQL> VARIABLE P_ID NUMBER;
SQL> EXEC GET_SINGLE_CUSTOMERINFO(123,:P_ID);
或者,使用变量:
declare
V_AGE NUMBER;
V_OCCUPATION VARCHAR2(10);
V_LASTSTATEMENT VARCHAR2(10);
begin
GET_SINGLE_CUSTOMERINFO (
P_ID => 1 ,
P_AGE => V_AGE ,
P_OCCUPATION => V_OCCUPATION ,
P_LASTSTATEMENT => V_LASTSTATEMENT
);
end;
有什么问题吗?你尝试过什么?PLS-00306:调用过程中参数的数量或类型错误当我调用过程时,很难在没有看到的情况下说出代码的错误。请发布您的代码。创建或替换过程GET_SINGLE_CUSTOMERINFO(P_ID IN NUMBER,P_AGE OUT NUMBER,P_OCCUPATION OUT VARCHAR2,P_LASTSTATEMENT OUT VARCHAR2)作为开始选择年龄,职业,LASTSTATEMENT进入P_年龄,P_OCCUPATION,来自crossallcustomers的P_LASTSTATEMENT,其中crossallcustomers.id=P_id;结束;如果您在过程调用中遇到问题,我们需要查看您用于调用过程的代码,而不仅仅是过程本身。如果答案适合您,请接受它。这是一种既可以将问题标记为已结束,又可以表示感谢的方式。您可以告诉我oracle 11g的书籍或网站名称,以便更多的实践和良好的知识往往被低估,但IMHO是一个很好的起点。即使对于@Aleksej,了解它的人也很少低估Oracle文档:)。事实上,Oracle DB文档是最好的产品文档示例之一。唉,人们不知道在哪里可以找到它们,也不知道如何使用它们。@APC事实上,正如我所说的“查看Oracle文档”,下面的评论(如果我理解得很好的话)是对不同内容的请求
SQL> variable V_AGE number;
SQL> variable V_OCCUPATION varchar2(10);
SQL> variable V_LASTSTATEMENT varchar2(10);
SQL> exec GET_SINGLE_CUSTOMERINFO (P_ID => 1, P_AGE => :V_AGE, P_OCCUPATION => :V_OCCUPATION , P_LASTSTATEMENT => :V_LASTSTATEMENT );
PL/SQL procedure successfully completed.