请高手帮帮忙,oracle 动态SQL问题

gyouth 2008-06-12 05:54:45
declare
v_str varchar2(5000) ;
v_date date;
begin
v_date:=to_date('20080611','yyyymmdd');
v_str:='create table tb_375_d_fcf_zz_qd as
select serv_number,production_id from
masa375.TB_DW_PD_USER_FUNCTION_CUR where deal_date = :1 and production_id in (''BPA1'',''BPA16'',''BPA24'',''BPA25'',''BPA26'',''BPA231'',''BPA232'',''BPA233'',''BPA21'',''BPA117'',''BPA64'')' ;
execute immediate v_str using v_date;
end;
执行后报错
ERROR 位于第 1 行:
ORA-01027: bind variables not allowed for data definition operations
ORA-06512: at line 9
请高数指出问题所在,谢谢!
...全文
186 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
netinsect00 2008-07-01
  • 打赏
  • 举报
回复
where deal_date = :1

这种写法不对

v_date 定义何用

可以更改
where deal_date = v_date
tylgl 2008-06-23
  • 打赏
  • 举报
回复
v_str varchar2(5000) ;
不是这里的问题 定义时无所谓的 但是使用最大只能4000

同意3楼
yuxingye 2008-06-19
  • 打赏
  • 举报
回复
v_str varchar2(5000) ;

4000 好像是一个临界值,问题应该在这里
gyouth 2008-06-18
  • 打赏
  • 举报
回复
谢谢各位,小弟初学ORACLE 以后还望多多请教!
robin_ares 2008-06-13
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 hxmsammi 的回复:]
引用 1 楼 hebo2005 的回复:
varchar2好像最大是4000


varchar2最大就支持4000,1楼的说的没错
[/Quote]
varchar2的字段最大就支持4000
变量是32767吧
rexyudl 2008-06-13
  • 打赏
  • 举报
回复
varchar2最大是4000不假,但是如果定义成5000也是能用的,它会默认按照4000来算。
只要字符的实际数量不超过4000是没有问题的。
我还是同意三楼的意见,是赋值的时候出错了!
samuellei 2008-06-13
  • 打赏
  • 举报
回复
The maximum width of a VARCHAR2 database column is 4000 bytes
kingofworl 2008-06-12
  • 打赏
  • 举报
回复
捆绑变量不能用在ddl语句上 where deal_date = :1 改为 where deal_date = v_date
hxmsammi 2008-06-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 hebo2005 的回复:]
varchar2好像最大是4000
[/Quote]


varchar2最大就支持4000,1楼的说的没错
hebo2005 2008-06-12
  • 打赏
  • 举报
回复
varchar2好像最大是4000

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧