- PR -

データ削除時のエラーについて

1
投稿者投稿内容
るぷ犬
常連さん
会議室デビュー日: 2004/11/10
投稿数: 46
投稿日時: 2007-01-30 18:51
データ削除時のエラーについて

いつもお世話になっています、るぷ犬です。


現在、システムで管理されているテーブル名をひとつずつ取り出し、
そのテーブルのデータのみを削除するストアドを作成しております。


下記のソースを実行させると、


メッセージ 1087、レベル 15、状態 2、プロシージャ trun_proc、行 25
テーブル変数 "@tbl_name" を宣言してください。


のような、エラーが出力されてしまいます。


なぜ、このようなエラーが出力されるのか、
どなたか、ご教授ください。
よろしくお願いします。



なお、truncate分、delete文をコメントアウトすると、
テーブル名称一覧が出力される所までは、確認しています。




---下記より下はソース---------------------


if exists (select * from dbo.sysobjects
where id = object_id(N'[dbo].[trun_proc]') and
OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop PROCEDURE [dbo].[trun_proc]
GO


CREATE procedure trun_proc as

declare @cur CURSOR

set @cur=CURSOR FOR
select name from sys.tables

declare @tbl_name char(256)

--カーソルオープン
open @cur

fetch next from @cur into @tbl_name

while @@fetch_status=0
begin

print cast(@tbl_name as varchar)

--truncate TABLE @tbl_name
--WHERE CURRENT OF @cur

delete from @tbl_name

fetch next from @cur into @tbl_name

end

close @cur
deallocate @cur

go
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2007-01-30 22:24
動的SQL用の変数を用意して、truncate/delete文を動的に組み立てて、
それを実行しないと駄目じゃないかな。

#SQLServer2000? 環境くらい書きましょうよ。
るぷ犬
常連さん
会議室デビュー日: 2004/11/10
投稿数: 46
投稿日時: 2007-01-31 13:57
お返事ありがとうございます。


環境はSQR SERVER2005です。
書き忘れていました。すみません。


動的SQLについて、調べてみます。
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)