一个sybase比较入门级的问题

w610010466 2015-07-27 03:12:53
我这边是sybase iq数据库,需要根据输入的参数,动态declare变量,大概地做法是 :1.传入或设置一个变量的值int 为6,然后根据接收的6,动态生成参数 declare a char(20),b char(20),c....,f char(20),6个参数,分别去接收一个表中查出来的6个参数。
...全文
451 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
w610010466 2015-07-28
  • 打赏
  • 举报
回复
好的,我这边又执行了下 打分号的那一行 显示 Syntax error near ‘;’ on line 8
  • 打赏
  • 举报
回复
为什么要动态定义变量呢? 定义的变量在execute()执行后, 你也访问不了。 语句要改成E-SQL的形式: begin declare @j_i_f int, @j_i_f_char char(20), @j_name char(40), @sql char(2000); select @j_i_f=1; select @j_name='a'; select @j_i_f_char=convert(char,@j_i_f); set @sqlcmd='declare @'+@j_name+@j_i_f_char+' char(20)'; execute(@sql); select @a1; end
w610010466 2015-07-27
  • 打赏
  • 举报
回复
前面的生成一个int 型变量已经实现,和后面把一个表的6个字段赋给这个6个变量也实现,就是中间的根据int型生成不同个数变量,我搜索了下,好像sql没有这种写法,我用 @sql=‘declare ' 方法 (
declare @j_i_f int,
@j_i_f_char char(20),
@j_name char(40),
@sql char(2000)
select @j_i_f=1
select @j_name='a'
select @j_i_f_char=convert(char,@j_i_f)
set  @sqlcmd='declare @'+@j_name+@j_i_f_char+' char(20)'
execute(@sql)
select @a1 
返回结果 column ’@a1‘ not found

2,596

社区成员

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

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