2016-07-16 20 views
0

私がしようとしているのは、@ReservationIDという変数を宣言し、特定の条件が存在するReservationテーブルの値に初期化し、その値をパラメータとして使用して新しいFolioを挿入することですテーブルエントリ。 Folioテーブルを印刷すると、新しいテーブルエントリは存在しません。私はSELECTステートメントをチェックして実行し、条件に基づいて正しい値が表示されます。変数を正しく初期化または渡していませんか?私はここで何が欠けていますか?どんな助けもありがとう。INSERT INTO値としてのSQL変数

DECLARE @ReservationID smallint; 
SET @ReservationID = (SELECT ReservationID FROM Reservation WHERE ReservationDate = CONVERT(varchar, GETDATE()) AND CreditCardID = 1) 

SET IDENTITY_INSERT Folio OFF 
INSERT INTO Folio (ReservationID, GuestID, RoomID, QuotedRate, CheckinDate, Nights, Status, Comments, DiscountID) 
VALUES(@ReservationID, 500, 20, 35.50, '07/24/2016', 3, 'R', NULL, 1); 
+0

ではありませんか? – niksofteng

+0

コードが正しいように見えます。 @ReservationIDの要件はサブクエリが1つの値だけを返さなければならないということです(これにはtop(1)を使用できます)。 'ReservationID'はIDENTITYカラムですか? –

答えて

0

変数を正しく初期化または渡していない可能性があります。

式の値に変数を割り当てる場合は、MSDN Hereを参照してください。行のないuが得る影響がどのようなあなたは以下

DECLARE @ReservationID smallint; 
select @ReservationID = ReservationID FROM Reservation 
WHERE ReservationDate = CONVERT(varchar, GETDATE()) AND CreditCardID = 1 

SET IDENTITY_INSERT Folio ON 
INSERT INTO Folio (ReservationID, GuestID, RoomID, QuotedRate, CheckinDate,Nights, Status, Comments, DiscountID) 
VALUES(@ReservationID, 500, 20, 35.50, '07/24/2016', 3, 'R', NULL, 1); 

、以下のように設定& IDENTITY_INSERTを修正する必要が

は私の簡単なテストコードは結果メッセージ]タブでは、

create table Reservation(ReservationID smallint identity, CreditCardID int) 

insert into Reservation values(1),(2),(3),(4),(5) 

SET IDENTITY_INSERT Reservation ON 

DECLARE @ReservationID smallint; 

select @ReservationID = ReservationID FROM Reservation 

insert into Reservation (ReservationID, CreditCardID) 
values(@ReservationID,100) 
+0

実際、uは1の後に ')'で上記の構文エラーを導入しました。構文上の問題があった場合、SSMSはそのように述べています。 OPが使用した 'SET'構文は正しいです。それは問題ではない。あなたが示したことはまさに別の構文です。 – niksofteng

+0

こんにちは@Nikhil Vartak、変数に値を代入し、式の値を変数に代入するためのsytaxの違いがあります。 [link](https://msdn.microsoft.com/en-us/library/ms187330.aspx)を参照してください。 – mahesh

+0

真実と私はそれを知っています。 OPが適切な '@変数 '値を得ることができるので、' select @ variable'と 'set @variable =(select)'の使用はここでは問題の原因ではありません。 – niksofteng

関連する問題