[英]How to write a stored procedure for insert value into multiple tables
兩張桌子
tblClass - ClassID {PK} , ClassName
tblOperation - OperationID {PK} , OperationName , ClassId
這些參數來自客戶端:
@OperationName VARCHAR ,
@ClassName VARCHAR ,
@UserID int
我想先檢查tblClass,如果類名不存在,則應將類名添加到表中。
之后,要檢查tblOperation並檢查類ID和操作名稱(如果沒有)必須插入。 誰可以幫我這個事。
DECLARE @ClassCount AS TINYINT,
DECLARE @OperationCount AS TINYINT,
DECLARE @ClassID AS BIGINT
SELECT @ClassCount = COUNT(ClassName), @ClassID = ClassID FROM tblClass WHERE ClassName = @ClassName
IF(@ClassCount = 0)
BEGIN
INSERT INTO tblClass VALUES (@ClassName)
SELECT ClassID FROM tblClass WHERE ClassName = @ClassName
END
SELECT @OperationCount = COUNT(OperationName) FROM tblOperation WHERE OperationName = @OperationName
IF(@OperationCount = 0)
BEGIN
INSERT INTO tblOperation VALUES (@OperationName,@ClassID)
END
我假設您將檢查該值是否存在,然后對其進行更新,如果不存在,則將其插入。
這是一些入門代碼,助您一臂之力:)我還沒有為您完成全部工作。
操作以下內容以獲取所需的內容。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE NameOfStoredProc
-- Add the parameters for the stored procedure here
@OperationName VARCHAR ,
@ClassName VARCHAR ,
@UserID int
AS
IF EXISTS (SELECT ClassName FROM tblClass WHERE ClassName = @ClassName)
BEGIN
--UPDATE HERE
--UPDATE TblClass SET ClassID = ###, ClassName = ### WHERE ?
--UPDATE TblOperation SET OperationID = ###, OperationName = ###, ClassId - ### WHERE ?
END
ELSE
BEGIN
-- INSERT HERE
--INSERT INTO tblClass
--INSERT INTO tblOperation
END
CREATE PROCEDURE sp_InsertClassOperation
@OperationName VARCHAR(100),
@ClassName VARCHAR(100),
@UserID INT
AS
IF NOT EXISTS (SELECT * FROM tblClass WHERE ClassName = @ClassName)
BEGIN
INSERT INTO tblClass(ClassName) VALUES (@ClassName)
DECLARE @ClassId INT = (SELECT ClassId FROM tblClass WHERE ClassName = @ClassName)
IF NOT EXISTS (SELECT * FROM tblOperation WHERE OperationName = @OperationName AND ClassId = @ClassId)
BEGIN
INSERT INTO tblOperation(OperationName, ClassId) VALUES (@ClassId)
END
END
試試這個概念:
在tblClass中運行更新查詢
更新tblclass設置...,其中classname ='something'
檢查是否有任何受影響的行,如果沒有受影響的行,請運行插入查詢
如果@@ RowCount = 0
插入tblclass(...)值(....)
接下來運行tblOperation的更新查詢
更新tblOperation設置classId = @@ Identity,...其中bla bla bla
檢查是否有任何受影響的行,如果沒有受影響的行,請運行插入查詢
如果@@ RowCount = 0
插入tblOperation(...,classId)值(...,@@ Identity)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.