Date: Mon, 15 Jan 2007 09:54:52 +0900
From: who@example.co.jp
堀川様
お世話になります。大坂です。
御回答ありがとうございます。
> >・新しいテーブルの名前を元の名前に変更(ALTER TABLE RENAME)
テーブル名変更はSP_RENAMEを使用しており
問題がありそうなのはSP_RENAMEのようでした。
すみません。
以下にサンプルを記載いたします。よろしくお願いいたします。
INSERT文で適当なエラーを発生させても
後のIF文内にあるSP_RENAMEを実行しようとしているように
思います。DROP TABLEは実行されていません。
※実際はSP_RENAMEで構文エラーとなります。
そのSP_RENAME文をそのままIF文の外に出すと
構文エラーとはならないです。
---------------------------------------------
--元テーブル(TEST)作成
CREATE TABLE TEST
(
A VARCHAR(2) NOT NULL,
B VARCHAR(6) NOT NULL,
C VARCHAR(16)
)
go
--作業用テーブル(TEMP)作成
CREATE TABLE TEMP
(
A VARCHAR(2) NOT NULL,
B VARCHAR(6) NOT NULL,
C VARCHAR(16) NOT NULL,
D VARCHAR(8)
)
go
--レコード移動(TEST→TEMP)※エラー発生文
INSERT INTO TEMP
(
A,
B,
C,
D
)
SELECT
A,
B,
C,
NULL,,,,,
FROM TEST
go
--以下成功の場合のみ
--旧TEST削除
--名称TEMPをTESTに変更
--新テストに主キー設定
IF @@ERROR = 0
BEGIN
DROP TABLE TEST
SP_RENAME TEMP, TEST
ALTER TABLE TEST
ADD PRIMARY KEY CLUSTERED (A, B)
END
go
---------------------------------------------
実行結果
行9: 'SP_RENAME'の近くに無効な構文があります。
以上、よろしくお願いいたします。
> 堀川です、今晩は。
>
>
> -----Original Message-----
> From: who@example.co.jp [mailto:who@example.co.jp]
> Sent: Saturday, January 13, 2007 4:02 PM
> To: who@example.ne.jp
> Subject: [ml-msde-beg:01898] OSQL でエラー判定によって処理の分岐を行ないたい
>
>
>
> >・新規テーブル作成(CREATE TABLE)
> >・レコード転送
> >if @@error = 0
> >begin
> >・元テーブル削除(DROP TABLE)
> >・新しいテーブルの名前を元の名前に変更(ALTER TABLE RENAME)
> >・新しいテーブルの主キー設定(ALTER TABLE ADD PRIMARY KEY) end go
>
>
> 上記の処理過程の内容を、正しく表現してくれないと、コメントできません。
>
> レコード転送の後に何行かプログラムが存在し、その後IF文になっているとか?
>
> 作成したSQL文は、公開できませんか?
>
> 公開できなければ、サンプル形式に置き換えて、表現して頂きたいと思います
>
> 自分の手元でも、再現できるスクリプトにして欲しいです。
>
>
> ------------------------------------
> Epata-IT/日本技術ソフト開発
> 堀川 明 (Akira Horikawa)
> 01月13日(土曜日) 21時52分記
> mailto:who@example.ne.jp
> http://www.horikawa.ne.jp/msde/
>
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|