web-dev-qa-db-ja.com

実行時にユーザーから入力を取得する方法

oracle 10g pl/sqlブロックでユーザーからランタイム入力を取得したい(つまり、ユーザーとの対話型通信)可能ですか?

declare
x number;
begin
x=&x;
end

&はOracle 10gでは使用できないため、このコードではエラーが発生します。

10
Ravindra Bagale

ユーザー入力を読み取り、後で使用するために変数に保存するには、sqlplusコマンドACCEPTを使用できます。

Accept <your variable> <variable type if needed [number|char|date]> Prompt 'message'

accept x number Prompt 'Please enter something: '

そして、次のようにPL/SQLブロックでx変数を使用できます。

declare 
  a number;
begin
  a := &x;
end;
/

スティングの例での作業:

accept x char Prompt 'Please enter something: '

declare 
  a varchar2(10);
begin
  a := '&x';   -- for a substitution variable of char data type 
end;           -- to be treated as a character string it needs
/              -- to be enclosed with single quotation marks
20
Nick Krasnov
declare
a number;
b number;
begin
a:= :a;
b:= :b;
if a>b then
dbms_output.put_line('Large number is '||a);
else
dbms_output.put_line('Large number is '||b);
end if;
end;
0
Parag Sali

あなたもこれを試すことができますそしてそれは動作します:

DECLARE
  a NUMBER;
  b NUMBER;
BEGIN
  a :=: a; --this will take input from user
  b :=: b;
  DBMS_OUTPUT.PUT_LINE('a = '|| a);
  DBMS_OUTPUT.PUT_LINE('b = '|| b);
END;
0
All Videos

これは、間違った値を割り当てるために次の行を使用したためです。

x=&x;

PL/SQLでは、次を使用して割り当てが行われます。

:=

したがって、コードは次のようになります。

    declare
    x number;
    begin
    x:=&x;
-- Below line will output the number you received as an input
    dbms_output.put_line(x);
    end;
    /
0
Dulith De Costa
`DECLARE
c_id customers.id%type := &c_id;
c_name customers.name%type;
c_add customers.address%type;
c_sal customers.salary%type;
a integer := &a`   

ここでc_id customers.id%type:=&c_id;ステートメントは、テーブルとステートメントで既に定義されているタイプのc_idを入力しますa integer:=&a変数aに整数を入力します。

0
jaskirat singh