런타임에 사용자로부터 입력을 받는 방법
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: '
그런 다음 사용할 수 있습니다.x
PL/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
'source' 카테고리의 다른 글
iOS에서 문자열을 하위 문자열로 분할하는 방법은 무엇입니까? (0) | 2023.08.04 |
---|---|
Swift를 사용하여 상위 보기에 맞게 텍스트 크기를 조정하는 방법UI? (0) | 2023.08.04 |
angular2 템플릿에서 정적 함수 호출 (0) | 2023.07.30 |
파이썬에서 객체의 현재 ref 카운터를 얻을 수 있는 방법이 있습니까? (0) | 2023.07.30 |
Rest Controller에서 메서드 Cors 문제 삭제 (0) | 2023.07.30 |