テーブルに格納されたステートメントを使用してテーブルを作成しようとしています。以下のように、execute(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 State="34000"
最初のテーブル (tab1) は作成されますが、他の (tab2、tab3) テーブルは作成されません。
ステートメント execute(sql) を select sql に置き換えると、スクリプトは正しく機能します。
ご回答ありがとうございます。
PX