source

런타임에 사용자로부터 입력을 받는 방법

manycodes 2023. 7. 30. 17:58
반응형

런타임에 사용자로부터 입력을 받는 방법

Oracle 10g PL/SQL 블록(즉, 사용자와의 대화형 통신)에서 사용자로부터 런타임 입력을 받고 싶습니다.가능합니까?

declare
x number;
begin
x=&x;
end

이 코드는 다음과 같은 오류를 제공합니다.

오라클 10g에서 사용할 수 없습니다.

사용자 입력을 읽고 변수에 저장하려면 SQL*Plus 명령을 사용합니다.ACCEPT.

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

accept x number prompt 'Please enter something: '

그런 다음 사용할 수 있습니다.xPL/SQL 블록의 변수는 다음과 같습니다.

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

당신도 이것을 시도해 볼 수 있습니다. 그러면 효과가 있을 것입니다.

DECLARE
  a NUMBER;
  b NUMBER;
BEGIN
  a := &aa; --this will take input from user
  b := &bb;
  DBMS_OUTPUT.PUT_LINE('a = '|| a);
  DBMS_OUTPUT.PUT_LINE('b = '|| b);
END;
    a number;
    b number;
    begin
    a:= :a;-- instead of "&" use ":" here 
    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;

실제로 제가 이것을 시도했을 때 완벽하게 작동했고 실제로 "&"은 오류를 발생시키기 때문에 ":"를 사용할 수 있습니다.

당신이 답을 받았기를 바랍니다.

그것은 당신이 잘못된 값을 할당하기 위해 다음 줄을 사용했기 때문입니다.

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;
    /
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;
`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에 정수 := &a를 입력합니다.

SQL> DECLARE
  2     a integer;
  3     b integer;
  4  BEGIN
  5     a:=&a;
  6     b:=&b;
  7     dbms_output.put_line('The a value is : ' || a);
  8     dbms_output.put_line('The b value is : ' || b);
  9  END;
 10  /

이를 사용하여 프롬프트 값을 가져오고 인쇄할 수 있습니다.

    set SERVEROUTPUT ON;

   /
     accept v_x number prompt 'Please enter something: '
    declare 
            v_x NUMBER;
    begin
            v_x := &v_x;
            dbms_output.put_line('the entered value was : '  ||  v_x); 
    end;
    
    /

만약 당신이 이것을 생활 속에서 하려고 한다면, 이것을 읽어보세요.제가 알기로는 livesql에서는 불가능합니다.이에 대한 사용 사례를 생각해 낼 수는 없지만, 어떤 경우에도 livesql에 피드백을 기록할 수 있으며 팀은 요청을 검토할 것입니다.

사용해 보십시오.

declare 
  a number;
begin
  a := :a;
dbms_output.put_line('Inputed Number is >> '|| a);
end;
/  

OR

declare 
  a number;
begin
  a := :x;
dbms_output.put_line('Inputed Number is >> '|| a);
end;
/

그것은 매우 간단합니다.

그냥 쓰기:

//먼저 test라는 이름의 테이블을 만듭니다.

create table test (name varchar2(10),age number(5));

//위 코드를 실행하면 테이블이 생성됩니다.

//이제 이름과 나이를 입력해야 합니다.

양식을 열어 해당 값을 입력하는 데 도움이 필요한 양식을 열어 나이를 입력해야 합니다.

insert into test values('Deepak', :age);

//이제 위의 코드를 실행하면 "1행 삽입" 출력이 표시됩니다.

/이제 select 쿼리를 실행하여 출력을 확인합니다.

select * from test;

//그게 다야...이제 아무도 사용자 데이터를 수락하는 것에 대한 쿼리를 가지고 있지 않다고 생각합니다.

언급URL : https://stackoverflow.com/questions/12516930/how-to-get-input-from-user-at-runtime

반응형