declare
tname varchar(10);
tage number(2);
twages number(5);
begin
select DBMS_RANDOM.string('a',10) into tname from dual;
select dbms_random.value(30,50) into tage from dual;
select dbms_random.value(3000,5000) into twages from dual;
end;
insert into teacher values(Tid_seq.Nextval,tname,M,tage,twages)
Tid_seq是写好的自增序列,表中每项和插入顺序对应,报错
oracle插入变量到表中
答案:5 悬赏:80
解决时间 2021-02-18 14:50
- 提问者网友:但未伤到心
- 2021-02-18 04:36
最佳答案
- 二级知识专家网友:duile
- 2021-02-18 05:19
块结构 中的变量,insert into 获取不到
如果你的表定义没错,则下面应该没问题:
declare
tname varchar(10);
tage number(2);
twages number(5);
begin
select DBMS_RANDOM.string('a',10) into tname from dual;
select dbms_random.value(30,50) into tage from dual;
select dbms_random.value(3000,5000) into twages from dual;
insert into teacher values(Tid_seq.Nextval,tname,M,tage,twages)
end;
或者:
变量的声明用define /var 去定义,在获取,insert写在外面则也没问题
如果你的表定义没错,则下面应该没问题:
declare
tname varchar(10);
tage number(2);
twages number(5);
begin
select DBMS_RANDOM.string('a',10) into tname from dual;
select dbms_random.value(30,50) into tage from dual;
select dbms_random.value(3000,5000) into twages from dual;
insert into teacher values(Tid_seq.Nextval,tname,M,tage,twages)
end;
或者:
变量的声明用define /var 去定义,在获取,insert写在外面则也没问题
全部回答
- 1楼网友:虚伪的现实
- 2021-02-18 09:59
估计是缺少引号的缘故。v_name是varchar2的吧。
改成 execute immediate ' insert into addtopinfo values('||sysdate||',‘‘'||v_name||'’’)'; 试试,就是v_name变量在语句里要有引号 。拼接字符串时每两个“'” 会被解析成为一个“'”
- 2楼网友:废途浑身病态
- 2021-02-18 08:28
对的啦 LZ你犯了很低级的错误啦 你end掉了匿名块,insert的时候哪来的Nextval,tname,M,tage,twages这几个变量咯
- 3楼网友:一池湖水
- 2021-02-18 07:19
将insert 语句写在end之前,这是个plsql的匿名块,insert语句应该包含在其中。
- 4楼网友:陪伴是最长情的告白
- 2021-02-18 05:45
declare
tname varchar(10);
tage number(2);
twages number(5);
begin
select DBMS_RANDOM.string('a',10) into tname from dual;
select dbms_random.value(30,50) into tage from dual;
select dbms_random.value(3000,5000) into twages from dual;
insert into teacher values(Tid_seq.Nextval,tname,M,tage,twages);
end;
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯