我想从oracle 10g pl / sql块中的用户那里获取运行时输入(即与用户的交互式通信),是否可能?
declare
x number;
begin
x=&x;
end
此代码提供错误&不能在oracle 10g中使用。
答案 0 :(得分:18)
要读取用户输入并将其存储在变量中以供以后使用,可以使用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
答案 1 :(得分:0)
那是因为您使用了以下行来分配错误的值。
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;
/
答案 2 :(得分:0)
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;
答案 3 :(得分:0)
`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_idcustomers.id%type:=&c_id; 语句输入表中已定义类型的c_id,并且语句整数:=&a 仅在以下位置输入整数变量
答案 4 :(得分:0)
您也可以尝试 它将起作用:
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;
答案 5 :(得分:0)
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 /
答案 6 :(得分:0)
您可以使用它来获取和打印提示值:
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;
/
答案 7 :(得分:0)
如果您尝试在 livesql 中执行此操作,请阅读此 . 据我所知,这在 livesql 上是不可能的。我真的想不出一个用例,但无论如何,您可以在 livesql 中记录反馈,团队将查看请求。
答案 8 :(得分:-4)
尝试这个
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;
/
答案 9 :(得分:-7)
非常简单
只写:
//首先创建名为test ....
的表create table test (name varchar2(10),age number(5));
//运行上面的代码时,将创建一个表....
//现在我们要插入一个名字&amp;一个年龄..
确保通过打开寻求帮助输入值的表单来插入年龄
insert into test values('Deepak', :age);
//现在运行上面的代码,你就会得到 “1行插入”输出......
/现在运行select查询以查看输出
select * from test;
//就是这样 ..现在我认为没有人对接受用户数据有任何疑问......