Проблема с использованием хранимой процедуры для вставки результатов запроса в таблицу - PullRequest
1 голос
/ 12 апреля 2019

Я пытаюсь провести тестирование некоторых таблиц, но, похоже, продолжаю сталкиваться с ошибкой.

Я пытаюсь запустить следующую хранимую процедуру:

INSERT INTO [Customer].[TableA_test] ([CustomerID], [VisitID], [TransactionId], [ArrivalDT], [DataA], [DataB], [DataC], [SnapDate]) 
    SELECT
        b.CustomerID,   
        b.VisitID,
        b.TransactionID,
        b.ArrivalDT,
        b.DataA,
        b.DataB,
        b.DataC,
        SnapDate = GETDATE()
    FROM 
        [Customer].[TableA_test] a
    LEFT JOIN 
        [Customer].[TableB] b ON a.VisitID = b.VisitID
                              AND a.TransactionId = b.TransactionID
    WHERE 
        a.TransactionID IS NULL

Процедура предназначена для получения результатов запроса и вставки их в таблицу A.Таблица A имеет те же столбцы и типы данных, что и TableB.Когда я пытаюсь выполнить хранимую процедуру (код приведен выше), я получаю следующую ошибку:

Сообщение 241, Уровень 16, Состояние 1, Процедура InsertTo_TableA_test, Строка 27
Преобразование не удалось при преобразованиидата и / или время из строки символов.

Все мои столбцы с датами имеют тип данных datetime: ArrivalDT и SnapDate.TableA_testing и TableB имеют одинаковые имена столбцов и типы данных.

Что-то мне не хватает?

Вот информация о таблице для [Customer]. [TableA_test]:

CREATE TABLE [Customer].[TableA_test]
(
    [TransactionID] [VARCHAR](254) NULL,
    [VisitID] [VARCHAR](254) NULL,
    [ArrivalDT] [DATETIME] NULL,
    [CustomerID] [VARCHAR](254) NULL,
    [DataA] [VARCHAR](50) NULL,
    [DataB] [VARCHAR](50) NULL,
    [DataC] [VARCHAR](50) NULL,
    [SnapDate] [DATETIME] NULL
)

А для TableB:

CREATE TABLE [Customer].[TableB]
(
    [TransactionID] [VARCHAR](254) NULL,
    [VisitID] [VARCHAR](254) NULL,
    [ArrivalDT] [DATETIME] NULL,
    [CustomerID] [VARCHAR](254) NULL,
    [DataA] [VARCHAR](50) NULL,
    [DataB] [VARCHAR](50) NULL,
    [DataC] [VARCHAR](50) NULL,
    [SnapDate] [DATETIME] NULL
)

Строка 27 моей хранимой процедуры:

INSERT INTO [Customer].[JTM_NY_SPARCS_VitalSigns_test] ([CustomerID],[VisitID], [TransactionID], [ArrivalDT], [DataA], [DataB], [DataC], [SnapDate]) 

Data result example

Вот полное считывание хранимой процедуры:

USE [Database_3]

GO

/****** Object:  StoredProcedure [Customer].[InsertTo_TableA_test]    Script Date: 4/12/2019 11:49:17 AM ******/
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO




CREATE PROCEDURE [Customer].[InsertTo_TableA_test]


/*
CREATED: 04/11/2019
*/


AS
BEGIN

INSERT INTO [Customer].[TableA_test] ([CustomerID], [VisitID], [TransactionId], [ArrivalDT], [DataA], [DataB], [DataC], [SnapDate]) 
        SELECT
            b.CustomerID,   
            b.VisitID,
            b.TransactionID,
            b.ArrivalDT,
            b.DataA,
            b.DataB,
            b.DataC,
            SnapDate = GETDATE()
        FROM 
            [Customer].[TableA_test] a
        LEFT JOIN 
            [Customer].[TableB] b ON a.VisitID = b.VisitID
                                  AND a.TransactionId = b.TransactionID
        WHERE 
            a.TransactionID IS NULL

END





GO

Пример строки результатов при выполнении запроса из хранимой процедуры:

100010 [VisitID]      
20000281542 [TransactionID]    
2014-07-09 15:44:42.000 [ArrivalDT] 
0032011 [CustomerID]     
147 [DataA]    
71 [DataB]  
69 [DataC]  
2019-04-12 11:54:23.753 [SnapDate]

1 Ответ

0 голосов
/ 12 апреля 2019

Из того, что я видел в ваших комментариях, вы сказали, что пытаетесь вставить из TableA_test в TableB. Если это так, то ваш запрос должен быть:

INSERT INTO [Customer].[TableB] ([CustomerID],[VisitID],[TransactionId],[ArrivalDT],[DataA],[DataB],[DataC],[SnapDate]) 

SELECT
    a.CustomerID,   
    a.VisitID,
    a.TranactionID,
    a.ArrivalDT,
    a.DataA,
    a.DataB,
    a.DataC,
    SnapDate = GETDATE()

FROM [Customer].[TableA_test] a
LEFT JOIN [Customer].[TableB] b
    ON a.VisitID = b.VisitID
        AND a.TransactionId = b.TransactionID
WHERE b.TransactionID IS NULL
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...