oracle 的存储过程中 动态的创建一张表 然后插入一个变量到这个表中,表能动态的创建但是变量不能插入进去
3个回答
展开全部
1、execute
immediate
'
insert
into
addtopinfo
values('||sysdate||','||v_name||')';
v_name
既然是变量
怎么可能会用'
'括号起来;
就算是
直接执行
的话
也是
execute
immediate
'
insert
into
addtopinfo
values(sysdate,v_name);
2、如果有v_name的话
,我建议你一般用拼sql的方式来执行
例如
如下格式(这个是我自己的procedure截取的,可以参考下)
v_CreateSql
:=
'
create
table
'
||vv_owner||'.'||
vv_name_temp
||
'
as
select
*
from
'
||
iv_name
||
'
where
1=0';
execute
immediate
v_CreateSql;
3、下次报错,请把你的出错情况提出来。我们怎么知道什么错呢?
immediate
'
insert
into
addtopinfo
values('||sysdate||','||v_name||')';
v_name
既然是变量
怎么可能会用'
'括号起来;
就算是
直接执行
的话
也是
execute
immediate
'
insert
into
addtopinfo
values(sysdate,v_name);
2、如果有v_name的话
,我建议你一般用拼sql的方式来执行
例如
如下格式(这个是我自己的procedure截取的,可以参考下)
v_CreateSql
:=
'
create
table
'
||vv_owner||'.'||
vv_name_temp
||
'
as
select
*
from
'
||
iv_name
||
'
where
1=0';
execute
immediate
v_CreateSql;
3、下次报错,请把你的出错情况提出来。我们怎么知道什么错呢?
展开全部
估计是缺少引号的缘故。v_name是varchar2的吧。
改成
execute
immediate
'
insert
into
addtopinfo
values('||sysdate||',‘‘'||v_name||'’’)';
试试,就是v_name变量在语句里要有引号
。拼接字符串时每两个“'”
会被解析成为一个“'”
改成
execute
immediate
'
insert
into
addtopinfo
values('||sysdate||',‘‘'||v_name||'’’)';
试试,就是v_name变量在语句里要有引号
。拼接字符串时每两个“'”
会被解析成为一个“'”
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
即使不加引号也可以插入的
最多oracle会做个隐式转换,这不会有问题
而且v_name本身就是char类型,根本不能存在转换问题
我有个疑问P_addstaffnum
这个是楼主干什么用的?
至于报错的问题楼主少了分号和commit才是关键!
最多oracle会做个隐式转换,这不会有问题
而且v_name本身就是char类型,根本不能存在转换问题
我有个疑问P_addstaffnum
这个是楼主干什么用的?
至于报错的问题楼主少了分号和commit才是关键!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询