2017-01-27 4 views
0

ちょっと、私は2つのパラメータを取るプロシージャを呼び出そうとしています。両方ともuser.Soから取り出す必要があります。私は)SQL DeveloperでPLSQLのユーザーと呼び出しプロシージャから2つの入力を受け取ります

create or replace procedure upd(x in binary_double , y in char) as 
res binary_double; 
begin 
    dbms_output.put_line('Hello World'); 
end; 

/*User input and calling of function*/ 
accept X binary_double prompt 'Enter percentage X (lower case)'; 
accept Y char(2) prompt 'Enter product type (lower case)'; 
call upd(&X, &Y); 

を働いている私は、この「コールUPD(& X、のようなプロシージャを呼び出す場合、それがスムーズに動作し、入力のために二回

old:call upd(&X, &Y) 
new:call upd(12, a) 

Error starting at line 69 in command: 
call upd(&X, &Y) 
Error report: 
SQL Error: ORA-06576: not a valid function or procedure name 
06576. 00000 - "not a valid function or procedure name" 
*Cause: Could not find a function (if an INTO clause was present) or 
      a procedure (if the statement did not have an INTO clause) to 
      call. 
*Action: Change the statement to invoke a function or procedure 

を促すメッセージが表示されたあとは、エラーを次与えます'a') "しかし、私がそれを呼び出すと悲惨に失敗する上記のやり方で。だから、なぜこれが起こり、どうやってそれを取り除くのですか?

accept Y char format a2 prompt 'Enter product type (lower case): ' 

(私はコロンと空白スペースで各プロンプトを終了することを好む:プロンプトがあるべきよう

答えて

1

まず、acceptは、単にSQL * Plusのスタイルのフォーマット、あなたがcharの長さを指定することはできません。値を入力する人がより明確になるので、それはあなた次第です)。

次に、文字列値を引用する必要があります。試してみてください:

call upd(&X, '&Y') 
+0

ちょっと働いた!ありがとう! – omjego

関連する問題