SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[spIncTurn_Member_fix]
(
/* param1 = part = edu,mem,women,personal
param2 = member_id or code(dept_name?)
*/
@param1 varchar(20),
@param2 varchar(20)
)
AS
SET NOCOUNT ON
BEGIN TRANSACTION
INSERT INTO BibleHistory (id, Bible, Chapter, Verse, [Content], member_id, dept_code, verse_id, dept_name, DateWrote, name, turn, forced_write, bible_lang)
SELECT
BibleWrote.id, BibleWrote.Bible, BibleWrote.Chapter,
BibleWrote.Verse, BibleWrote.[Content],
BibleWrote.member_id, BibleWrote.dept_code,
BibleWrote.verse_id, BibleWrote.dept_name,
BibleWrote.DateWrote, BibleWrote.name, BibleWrote.turn,
BibleWrote.forced_write, BibleWrote.bible_lang
FROM
BibleWrote
INNER JOIN
Member ON BibleWrote.member_id = Member.id --AND BibleWrote.turn < Member.turn
WHERE
(BibleWrote.dept_code = @param1)
AND (Member.id = @param2)
IF @@ERROR <> 0
BEGIN
/* ?- Rollback the transaction */
ROLLBACK
RAISERROR ('Error in copying BibleWrote into BibleHistory.', 16, 1)
RETURN
END
DELETE FROM BibleWrote
FROM BibleWrote
INNER JOIN Member ON BibleWrote.member_id = Member.id --AND BibleWrote.turn < Member.turn
WHERE (BibleWrote.dept_code = @param1) AND (Member.id = @param2)
IF @@ERROR <> 0
BEGIN
/* -? Rollback the transaction */
ROLLBACK
RAISERROR ('Error in deleting BibleWrote table.', 16, 1)
RETURN
END
COMMIT
RETURN
以下は実行しようとしているクエリです。何らかの理由で行に影響を与えません。私は職場で使っているmysqlに精通しており、SQL Serverに慣れ親しんでいます。なぜこのクエリが正しく動作しないのかわかりません。あなたの手順は、あなたが宣言Name.Inあなたのパラメータを確認してくださいSQL Serverのこのクエリで何が問題になっていますか?
EXEC [dbo].[spIncTurn_Member_fix] @param1='personal', @params2='671'
GO
はあなたが提供しているパラメータを使用して手動で選択部分を実行しようとしたことがありますか?結果は何ですか? – gmiley
yeh静的パラメータ値 – Beginner
を使用してクエリを手動で実行してみてくださいまた、rolback文が実際にcommitステートメントを無効にすると考えています(Begin Tranは関連付けられていないため)。 –