我有一個插入存儲過程,我想根據用戶發送的參數值動態設置SELECT
子句表。我將發佈一個示例我認爲它應該看起來像:SQL Server:如何在INSERT存儲過程中動態設置FROM值
*編輯,我最初發布不正確的代碼示例。我道歉*
CREATE PROC [spInsertLOG_ReqClone]
(@NewReqID char(8),
@ReqID char(8),
@SiteCode char(3),
@RequestorID char(6),
@CloneFromPo bit)
AS BEGIN
DECLARE @ReqCreatedDate datetime = GetDate()
SET @NewReqID = dbo.fnLOG_ReqIDGenerator(@SiteCode) --Generates New ReqID
INSERT INTO LOG_ReqHeader (
ReqID,
ReqCreatedDate,
RequestDate,
RequiredByDate
)
(SELECT
@NewReqID,
@ReqCreatedDate,
@ReqCreatedDate,
@RequiredByDate
FROM LOG_ReqHeader h
WHERE h.ReqID = @ReqID)
INSERT INTO LOG_ReqLineItems
(ReqID,
QtyOrdered,
UI,
PartNumber,
Nomenclature)
If @CloneFromPO = 0 -- Use line items intially entered in ReqLineITems table
BEGIN
(SELECT
@NewReqID,
l.QtyOrdered,
l.UI,
l.PartNumber,
l.Nomenclature
FROM ReqLineItems l
WHERE l.ReqID = @ReqID)
END
If @CloneFromPO = 1 -- Use line items after PO was issued from PO table
Begin
(SELECT
@NewReqID,
l.Qty_Ord,
l.UnitOfIssue,
l.Part_Number,
l.Item_Desc
FROM PO_LineItems l
WHERE l.ReqID = @ReqID)
END
END
動態SQL可能是實現它的一種方法,但它不是唯一的方法。 :-) – 2013-02-20 01:05:09
幾乎總是有不止一種方法去皮膚貓:-) – 2013-02-20 06:15:37
是的,但「你需要」意味着只有一個。 – 2013-02-20 09:28:23