0

多数の場所の他の 2 つの circ_slip 値 (「支払い」と「払い戻し」) に次のクエリを適用したいと思います。

delete from circ_slip_field 
where location = 'NEW LOCATION' and circ_slip = 'waive'
go
declare @copy_loc varchar(7), @new_loc varchar(7) 
select @copy_loc = 'OLD LOCATION' 
select @new_loc = 'NEW LOCATION'
insert circ_slip_field
       (circ_slip,location,section,ord,circ_slip_field_type,label,field_column,
        append_to_prev,justify,max_field_len,min_field_len,data_mask)
select  circ_slip,@new_loc,section,ord,circ_slip_field_type,label,field_column,
        append_to_prev,justify,max_field_len,min_field_len,data_mask
from circ_slip_field 
where circ_slip = 'waive' and location = @copy_loc

そこで、最初に次の行を追加し、元のクエリを 3 回コピーして、「放棄」の 2 つのインスタンスをそれぞれ「支払い」と「払い戻し」に置き換えました。

 declare @copy_loc varchar(7), @new_loc varchar(7) 
 select @copy_loc = 'COPY LOCATION' 
 select @new_loc = 'NEW LOCATION'

2 つの select variable ステートメント (@copy_loc と @new_loc) も既に宣言されているため削除しました。

なぜこれがうまくいかなかったのかについて何か考えはありますか? 大変感謝しております。言うまでもなく、私は一般的に SQL にまったく慣れていません。

**編集:「機能しませんでした」とは、クエリがエラーなしで実行されたが、新しい場所に変更が加えられなかったことを意味します。

* 2 番目の編集: 問題は「go」コマンドにあると思います。全体を通して変数が機能するようにするには、3 つのレプリケートされたクエリから「go」を削除する必要があります。

4

1 に答える 1

1

@copy_loc と @new_loc は varchar(7) として定義されていますが、12 文字を入力していることに注意してください。これらは切り詰められており、テーブルのフィールドと一致しません。変数を varchar(50) にします。必要以上のスペースを使用することはありません。

于 2013-06-25T17:28:34.400 に答える