我试图使用存储在表中的语句创建表。我使用的是执行(SQL)光标如下:光标未打开
create table tab
(
CreateSql varchar(250)
)
insert into tab values ('create table tab1 (id int)')
insert into tab values ('create table tab2 (id int)')
insert into tab values ('create table tab3 (id int)')
declare cur cursor for
select createsql
from tab
declare @sql varchar(255)
open cur
fetch cur into @sql
while @@SqlStatus = 0
begin
execute(@Sql)
fetch cur into @sql
end
close cur
deallocate cursor cur
如果我运行它会出现一个错误:
无法执行的语句。游标不开SQLCODE = -180,ODBC 3 状态= “34000”
第一个表(TAB1)将创建,但其他(TAB2,TAB3)表不。
如果我用select sql替换语句execute(sql),脚本将正常工作。
在此先感谢您的回答。
PX
您知道,我希望您的当前代码能够以任意顺序运行单个语句,因为您的游标定义中没有ORDER BY。 – 2012-08-15 07:33:52
是的,我知道。没关系,这只是一个例子。 – Parado 2012-08-15 10:38:52