Я пишу простую хранимую процедуру в SQL Server 2016, но когда у меня есть 2 инструкции вставки я получаю сообщение об ошибке, что говоритхранимой процедура несколько вставок ошибок
Неправильный синтаксис около «End»
Есть ли что-то не так с моим синтаксисом или это невозможно?
Обратите внимание, что это табличное значение параметра, который я посылаю в хранимую процедуру в качестве аргументов
SQL заявление:
-- This is the stored procedure
CREATE PROCEDURE [dbo].[SampleProcedure]
(-- which accepts 2 table value parameters
-- It should be noted that the parameter is readonly
@Sample As [dbo].[SampleDataType] Readonly,
@Rec As [dbo].[SampleRecType] ReadOnly
)
AS
BEGIN
-- We simply insert values into the DB table from the parameter
-- The table value parameter can be used like a table with only read rights
-- INSERT INTO SampleTable(SampleString, SampleDate)
-- SELECT SampleString, SampleDate
-- FROM @Sample
INSERT INTO tbl1Recipients(strEmailSendIDx, strEmailAddress, strDisplayName, strRecipientType)
INSERT INTO tbl1SentEmails(strEmailSendID, dtmSent, strSubject, strBody, strConversationID, strConversationTopic, strConversationIndex, dtmReplied, dtmOpened, dtmClicked, blnTrackOpens, blnTrackClicks, blnTrackReplies, lngMergeID, blnHide, lngLatestEventID, strClickResponse, dtmClickResponse)
SELECT *
FROM @Sample
END
Отредактировано, после прочтения комментариев и предложенный ответ это то, что решается вопрос:
-- This is the stored procedure
CREATE PROCEDURE [dbo].[SampleProcedure]
(
-- which accepts one table value parameter.
-- It should be noted that the parameter is readonly
@Sample As [dbo].[SampleDataType] Readonly,
@Rec As [dbo].[SampleRecType] ReadOnly
)
AS
BEGIN
-- We simply insert values into the DB table from the parameter
-- The table value parameter can be used like a table with only read rights
INSERT INTO tbl1Recipients(strEmailSendID, strEmailAddress, strDisplayName, strRecipientType)
SELECT *
FROM @Rec
INSERT INTO tbl1SentEmails(strEmailSendID, dtmSent, strSubject, strBody, strConversationID, strConversationTopic, strConversationIndex, dtmReplied, dtmOpened, dtmClicked, blnTrackOpens, blnTrackClicks, blnTrackReplies, lngMergeID, blnHide, lngLatestEventID, strClickResponse, dtmClickResponse)
SELECT *
FROM @Sample
END
Все это было нужно другое SELECT
после того как я ввел данные в tbl1Recipients
Короче говоря, ваш синтаксис неверен. Пожалуйста, проверьте синтаксис оператора INSERT – Squirrel
@Squirrel, если я удалю 'Insert' для' tbl1Recipients', он работает. Я знаю, что допускаются множественные вставки ... но я проверил значения для 'tbl1Recipients', и кажется, что все в порядке. –
Ваша инструкция вставки выглядит неправильно. Результаты из select * from '@sample не должны укладываться в таблицу с 4 столбцами и другую таблицу с 18 столбцами. Вы должны иметь возможность разделить два оператора вставки с двумя различными наборами результатов выбора, возможно, создать «@samplerecipients» и «@sampleemails» – BasicIsaac