简体   繁体   中英

How to run stored procedure query between 2 table & insert data base on reference column?

I've created a simple stored procedure to update my Sample_TAG_NUMBERTEST table but I need it to get an ItemCode from another table PartItem by using both SOLine & SONbr to do the query but I don't know how to write it.

2nd thing I need to do is when my StatusCode column is N001 then my DESC column will automatically insert NEW ORDER data value, for PR002 my DESC column will become Progress .

How can I do that? Thanks in advance.

ALTER PROCEDURE [dbo].[SampleTagNumberUpdate] 
@sONbr nvarchar(50) = NULL,
@SOLine nvarchar(50) = NULL,
@SerialNbr nvarchar(50) = NULL,
@StatusCode nvarchar(50) = NULL,
@PackType nvarchar(50) = NULL,
@PalletID nvarchar(50) = NULL,
@PackingListNo nvarchar(50) = NULL,
@ItemCode nvarchar(50) = NULL,
@CrDateTime nvarchar(50) = NULL,
@CrUserID nvarchar(50) = NULL,
@return nvarchar(50) = NULL OUTPUT
AS
BEGIN
SET NOCOUNT ON;

    IF EXISTS(SELECT sONbr , SOLine
              FROM [SampleSystem].[dbo].[Sample_TAG_NUMBERTEST]
              WHERE sONbr = @sONbr AND SOLine = @SOLine)
BEGIN
    UPDATE [SampleSystem].[dbo].[Sample_TAG_NUMBERTEST]
    SET     SerialNbr = @SerialNbr
            ,StatusCode = @StatusCode
            ,PackType = @PackType
            ,PalletID = @PalletID
            ,PackingListNo = @PackingListNo
            ,ItemCode = @ItemCode
            ,LastUpdDateTime = GETDATE()
            ,LastUpdUserID = @CrUserID

    WHERE sONbr = @sONbr AND SOLine = @SOLine

    IF @@ERROR <> 0
      Set @Return = 'UPDATE FAILED'
    ELSE
      Set @Return = 'UPDATE SUCCESSFULLY'
END
ELSE
BEGIN
   INSERT INTO [SampleSystem].[dbo].[Sample_TAG_NUMBERTEST](SONbr, SOLine, SerialNbr
            ,StatusCode
            ,PackType
            ,PalletID
            ,PackingListNo
            ,ItemCode
            ,CrDateTime
            ,CrUserID)
   VALUES(@sONbr, @SOLine, @SerialNbr, @StatusCode, @PackType
            ,@PalletID
            ,@PackingListNo
            ,@ItemCode
            ,GETDATE()
            ,@CrUserID)

   IF @@ERROR <> 0
  Set @Return = 'INSERT DATA FAILED'
   ELSE
      Set @Return = 'INSERT DATA SUCCESSFULLY'
END
END

I believe I have provided an example for both questions below:

UPDATE T
   SET ItemCode = (SELECT PI.ItemCode FROM PartItem AS PI WHERE PI.SO = @SO AND PI.SO_LINE = @SO_LINE),  
   DESC = CASE @StatusCode WHEN 'N001' THEN 'NEW ORDER' 
          ELSE CASE @StatusCode WHEN 'PR002' THEN  'PROGRESS' ELSE '' END
          END,
        <other columns here...>
FROM SAMPLE_TAG_NUMBERTEST AS T

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM