如何在SQL Server 2012中使用Sp将数据插入多个表中

时间:2018-11-15 08:34:18

标签: sql-server

如何将数据insert分成几个表,每个表具有不同的类型和数量的参数。例如

表1

Code Type
'A'   X

表2

Code Type Status Dasl

这里的参数数量不同。

在这种情况下,如何使用公用的insert将数据stored procedure conda install -c conda-forge opencv 到表中。

2 个答案:

答案 0 :(得分:0)

创建样本存储过程以了解如何将数据保存到记录中。 如下所示创建表类型以将多个记录插入数据库中

CREATE TYPE [dbo].[tbl_Table2] AS TABLE(
    [Code] [char](2) NULL,
    [Type] [char](2) NULL,
    [Status] [varchar](5) NULL,
    [Dasl] [varchar](5) NULL
)
GO

CREATE PROCEDURE [dbo].[Usp_DataInsert] 
(
@Code  CHAR(2),
@Type CHAR(2),
@tbl_Table2 AS tbl_Table2 READONLY
)
AS 
BEGIN TRY 

    IF EXISTS(SELECT 1 FROM @tbl_Table2)
    BEGIN 
    INSERT INTO Table2
    (
     Code
    ,[Type]
    ,[Status]
    ,Dasl
    )
    SELECT Code
          ,[Type]
          ,[Status]
            ,Dasl 
    FROM @tbl_Table2
    END
    INSERT INTO Table1
    (
    Code,
    [Type]
    )
    SELECT @Code,@Type

END TRY
BEGIN CATCH
        DECLARE @ErrorMessage NVARCHAR(4000);
        DECLARE @ErrorSeverity INT;
        DECLARE @ErrorState INT;

        SELECT 
            @ErrorMessage = ERROR_MESSAGE(),
            @ErrorSeverity = ERROR_SEVERITY(),
            @ErrorState = ERROR_STATE();

        RAISERROR (@ErrorMessage, -- Message text.
                   @ErrorSeverity, -- Severity.
                   @ErrorState -- State.
               );
END CATCH;

通过存储过程将数据插入表中

DECLARE @RC int
DECLARE @Code char(2)='Z'
DECLARE @Type char(2)=33
DECLARE @tbl_Table2 tbl_Table2

INSERT INTO @tbl_Table2
SELECT 'A','X','A','AB' UNION ALL
SELECT 'A','X','A','AB' UNION ALL
SELECT 'A','X','A','AB' UNION ALL
SELECT 'A','X','A','AB' 

EXECUTE @RC = [dbo].[Usp_DataInsert] 
   @Code
  ,@Type
  ,@tbl_Table2
GO

答案 1 :(得分:0)

您需要使用不同的存储过程来插入具有不同参数的多个表,还可以从前端使用事务