问个Sybase中动态执行SQL的难题!

tobato 2002-07-03 10:16:41
在Oracle 中可以执行动态的SQL语句,甚至是动态的游标!

请问Sybase中是否可以执行动态的游标?? 就是说游标的内容是

动态的!Where 后的条件是变量
...全文
74 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
老吴子 2002-07-04
  • 打赏
  • 举报
回复
to tobato(tobato):
Sybase和ORACLE只是使用习惯的问题,在使用T-SQL时更加趋向于使用集合运算,会大量使用临时表,而ORACLE PL/SQL更加过程化,如果原先使用ORACLE,转到Sybase会感到不适应,但如果从Sybase转到Oracle,则会感觉好一些。
tobato 2002-07-04
  • 打赏
  • 举报
回复
目前我需要的是Where 后的条件是变量,前面的都定了,
有没有办法?
kaikaihe 2002-07-04
  • 打赏
  • 举报
回复
Sybase不支持动态语句,主要是数据库对象不能用变量代替
developer2002 2002-07-04
  • 打赏
  • 举报
回复
你是这样带参数哦,这样的话的确cursor不支持。
tobato 2002-07-04
  • 打赏
  • 举报
回复
Where 后面确实不能带 @vc_SqlCode ="coll1=@value and coll2=value"
这个已经确定了!
execute 确实不支持declare cursor !
中间表在小于2K 的时候不写I/O ,那么说Sybase的游标还是不能单独动态生成! 同意 tiger7403(好兵帅克) 的方法,我这边已经有解决方法了。确实
可以利用中间表来搞定.
Sybase 用了没几天,但是和Oracle一比较,感觉很失望。


developer2002 2002-07-04
  • 打赏
  • 举报
回复
谁说定义cursor时,where子句不能带变量的呢。
试试
declare cursorname cursor for select * from temp where col1=@value
tiger7403 2002-07-04
  • 打赏
  • 举报
回复
sybase的12版以后支持动态sql,用:
execute("string" | char_variable [ + "string" | char_variable])
例:
declare @sql varchar(200)
declare @table_name varchar(200)

select @table_name = "sysobjects"

select @sql = "select * from " + @table_name + " where id = 3"
execute(@sql)

注:不过execute好像不支持declare cursor,你可以试一试。如果不支持,我想你可以利用中间表生成cursor的方法试一试。
developer2002 2002-07-03
  • 打赏
  • 举报
回复
sybase游标中where子句可带变量,但表名不可以为变量。
类似oracle的open cursor_name for 'select * from '||table_name
的语句是不能实现的
developer2002 2002-07-03
  • 打赏
  • 举报
回复
sybase的cursor支持where条件语句中可带变量,但不支持cursor中的表名为变量

2,598

社区成员

发帖
与我相关
我的任务
社区描述
Sybase相关技术讨论区
社区管理员
  • Sybase社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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