2017-10-16 2 views
2

からプロシージャを呼び出す引数の型は、私は、この手順を持っているユーザーCC_LOPESとして記録:間違った番号またはOracle SQL Developerの

私は

EXECUTE P_MSG_HOTEL.parse_msg(596210657, '@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60'); 

でのOracle SQL Developerから実行しよう

create or replace PACKAGE BODY   "P_MSG_HOTEL" AS 

    function parse_msg(p_id in number, p_msg in varchar2) return number is 
    ... 
end; 

私はこのエラーを得た:

Error que empieza en la línea: 1 del comando : 
BEGIN P_MSG_HOTEL.parse_msg(596210657, '@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60'); END; 
Informe de error - 
ORA-06550: línea 1, columna 126: 
PLS-00306: wrong number or types of arguments in call to 'PARSE_MSG' 
ORA-06550: línea 1, columna 126: 
PL/SQL: Statement ignored 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

答えて

1

アムは本当に興奮を包み知っているあなたは本当に得ましたerrorあなたの質問に言及しました。

は、理想的に、あなたのような何か持っていた必要があります。

 * 
ERROR at line 1: 
ORA-06550: line 1, column 7: 
PLS-00221: 'PARSE_MSG' is not a procedure or is undefined 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

をしかし、あなたは投稿:これは静かな誤解を招くように見える

Error que empieza en la línea: 1 del comando : 
BEGIN P_MSG_HOTEL.parse_msg(596210657, '@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60'); END; 
Informe de error - 
ORA-06550: línea 1, columna 126: 
PLS-00306: wrong number or types of arguments in call to 'PARSE_MSG' 
ORA-06550: línea 1, columna 126: 
PL/SQL: Statement ignored 
06550. 00000 - "line %s, column %s:\n%s" 
*Cause: Usually a PL/SQL compilation error. 
*Action: 

私が意味していることを示すために、以下のデモを行いました。これは明らかにOracle意味

* 
ERROR at line 1: 
ORA-06550: line 1, column 7: 
PLS-00221: 'PARSE_MSG' is not a procedure or is undefined 
ORA-06550: line 1, column 7: 
PL/SQL: Statement ignored 

を実行しながら、あなたの関数を識別することができません

EXECUTE P_MSG_HOTEL.parse_msg(596210657, 
'@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60'); 

エラー:実行に

CREATE OR REPLACE PACKAGE P_MSG_HOTEL 
AS 
    FUNCTION parse_msg (p_id IN NUMBER, p_msg IN VARCHAR2) 
     RETURN NUMBER; 
END; 
/
CREATE OR REPLACE PACKAGE BODY P_MSG_HOTEL 
AS 
    FUNCTION parse_msg (p_id IN NUMBER, p_msg IN VARCHAR2) 
     RETURN NUMBER 
    IS 
    BEGIN 
     RETURN 1; 
    END; 
END; 

あなたがそれを示した方法は、言うエラーが発生します。私は好きですかとき しかし:

SQL> 
select P_MSG_HOTEL.parse_msg(596210657, '@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60') as col 
from dualSQL> 2 
    3/

     COL 
---------- 
     1 

私は出力を得ます。

匿名ブロックを使用すると結果が得られます。

SQL> DECLARE 
    x NUMBER; 
BEGIN 
    x := 
     P_MSG_HOTEL.parse_msg (
     596210657, 
     '@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60'); 
    2  DBMS_OUTPUT.put_line (x); 
END; 
/ 
1 

PL/SQL procedure successfully completed. 

SQL> 

したがって、要するに、実行中の方法でこの機能を使用することはできません。

0

は直接functionを実行しないでください。どちらかDBMS_OUTPUT

SET SERVEROUTPUT ON 

EXEC DBMS_OUTPUT.PUT_LINE(P_MSG_HOTEL.parse_msg(arg1,arg2)); 

の内側にそれをするか、または出力を取得するには、選択中の関数でクエリを実行します。あなたは、関数がどこかで捕獲される必要があるいくつかの値を返す機能を実行するためのコマンドを実行して使用することはできません

select P_MSG_HOTEL.parse_msg(arg1,arg2) FROM DUAL; 
0

、使用無名ブロック:

declare 
    f_return number; 
begin 
    f_return := P_MSG_HOTEL.parse_msg(596210657, '@S,358639058787154;E,10;D,05102017145210,05102017145210;G,4046393,51206983,258,8;M,4709;S,0;IO,1,0,0;DI,79DEAD60'); 
end; 
/
関連する問題