我可以在ASE中使用动态sql来声明游标

时间:2011-03-08 18:17:02

标签: dynamic-sql sybase-ase

我想使用动态sql为游标选择数据库名称。使用sybase ASE可以实现这种或类似的东西吗?

create procedure myproc
  @dbname = varchar(20) = null as

declare mycur cursor for select @dbname..mytable

... use cursor

go

2 个答案:

答案 0 :(得分:0)

您可以动态创建临时表

之类的东西
create procedure myproc (@dbname  ....)

as

exec ('SELECT ...... into tempdb..test FROM '+@dbName+'..mytable')

- 然后

DECLARE Cursor1 for tempdb..test
open cursor 

答案 1 :(得分:0)

要使用动态sql,首先使用

创建临时表
Create table #mytemptab (col1 …, col2 …)

使用以下方法构建动态sql

DECLARE @sqlstr VARCHAR(5000)

SELECT @sqlstr=’SELECT col1, col2 FROM ‘+@table

现在插入您创建的临时表(确保它与sql输出的数据类型相同)

SELECT @sqlstr= ‘Insert into #mytemptab (col1, col2 …) ‘+@sqlstr

执行sql语句(将数据插入临时表)

EXECUTE (@sqlstr)

现在使用光标中的临时表

DECLARE mycursor CURSOR FOR SELECT col1, col2 FROM #mytemptab

OPEN…

FETCH…

...