我的代码如下
create or replace procedure P_judgeexist
(
v_name char ,
v_birthdate staff.stbirthdate%type,
v_phone staff.stphone%type,
v_depid staff.depid%type,
v_gender staff.stgender%type,
v_money staff.money%type
)
is
a int;
v_sql char(50);
begin
SELECT COUNT(*) into a
FROM all_tables
WHERE table_name= 'ADDTOPINFO';
P_addstaffnum(v_name,v_birthdate,v_phone,v_depid,v_gender,v_money);
if a=0
then
execute immediate 'create table addtopinfo(addtime date,staffname char(15))';
execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')';
else
execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')';
end if;
end;
--调用过程
begin
P_judgeexist('王老吉',to_date('1999-11-12','yyyy-mm-dd'),'13880',7,'男',3200);
end;
这句话出错了, execute immediate ' insert into addtopinfo values('||sysdate||','||v_name||')'; 不知道怎么搞的,求教各位
我用 v_sql:= 'insert into addtopinfo values('''||sysdate||''','''||v_name||''')';
成功运行 感谢
帮组解答的童鞋
create 表之后仍然需要commit.....
我把语句改成
v_sql:= 'insert into addtopinfo values('||sysdate||','||v_name||')';
然后在创建表之后添加了一个
commit
但是提示
你把你整个sql发出来。。。。肯定其它部分出错了。
追问代码已私信你..请帮忙查看下
插入的v_sql字符串 我打印出来 是:insert into addtopinfo values(14-10月-12,王老吉)
这个语句是对的噻,但是值提示,v_sql缺失逗号,搞晕了
execute immediate v_sql2; v_sql2呢?没定义吧
追问这不是重点,v_sql 提示缺失逗号,v_sql2只是定义了一个需要打印的东东,发给你的时候没删完.....
追答create or replace procedure P_judgeexist
(
v_name varchar2
)
is
a int;
v_sql char(150);
begin
v_sql:= 'insert into addtopinfo values('||'sysdate'||','||v_name||')';
dbms_output.put_line(v_sql);
execute immediate v_sql;
commit;
end P_judgeexist;
sysdate 需要用‘ ’括起来就没错了。。。唉。。尼玛 我也以为sysdate也是不需要阔的,但是输出v_sql发现错了,下次注意,还有v_name 写成varchar2类型,不然会继续报错。这次没错了。。你可以直接拿去用了
*****************************************
为了防止更多的同学被你误解,create 表是不需要commit 的;只有delete 或者insert 之后才需要commit; 请尊重事实