我想使用动态sql为游标选择数据库名称。使用sybase ASE可以实现这种或类似的东西吗?
create procedure myproc
@dbname = varchar(20) = null as
declare mycur cursor for select @dbname..mytable
... use cursor
go
答案 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…
...