proc 中动态sql的问题,

qish 2002-09-27 01:58:50
我把oracle的动态sql的例子拿了过来,这个例子是用sqlda来处理的,我编译成功后执行了一下,如果用select * from emp where :V1 = :V2,这样是可以的执行的,只要我输入列名对应V1,一个值对应V2,就可以了,可是我如果用select * from :V1就不行了,我看了动态sql的说明是宿主变量可以是数据库对象的名字,包括表名,列名等,我的这个例子是oracle安装目录下的precomp下的demo下的sample10,请高手指点迷津,谢谢!
...全文
61 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
qish 2002-10-08
  • 打赏
  • 举报
回复
其实在应用中是很少要我那样做的,只是我看了资料上有,所以就试了一下,谢谢你的帮助。
deng0825 2002-10-08
  • 打赏
  • 举报
回复
回 weijsh(成名男子):
安装oracle for win客户端及VC即可。
deng0825 2002-10-08
  • 打赏
  • 举报
回复
回 qish(chen)
你不一定都用宿主变量来解决,可以这样:
char table_name[32];

......

strcpy(table_name,"你需要的表名");

sprintf( dyn_sql, "insert into %s values( :v2, :v3)", table_name);

本人这样没有问题呀!
weijsh 2002-09-29
  • 打赏
  • 举报
回复
to deng0825(甲骨文)
请问如何配制vc6.0(本地)+oracle8.1.5(远程服务器),平时我是用sql/puls访问oracle8.15(远程服务器)的。
谢谢!!
-------很想参与pro*c开发行列中者
qish 2002-09-27
  • 打赏
  • 举报
回复
sample7的例子我刚试过,如果要是列名对象为宿主变量没有什么问题,可是如果表名也用宿主变量,如insert into :V1 values( :V2,:V3);最后运行总是错的,报告的错误是无效表名,你如何解决的???
deng0825 2002-09-27
  • 打赏
  • 举报
回复
sample10的例子的意思与你讲的有区别:它是模拟 sqlplus ,允许输入sql或pl/sql,然后执行输出结果。实现方法是利用 sqlda 动态结构数组。
本人在win2000+vc6.0+oracle8.1.7(远程服务器)编译通过并可执行。
你谈到的情况不用这么复杂来实现(当然也可以实现)。
sample7 可以很好的解决你的问题。
liuhenger 2002-09-27
  • 打赏
  • 举报
回复
这个问题20分好像太少了
luckysxn 2002-09-27
  • 打赏
  • 举报
回复
关注!

17,089

社区成员

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

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