У меня есть процедура, которая добавляет новые данные в таблицу.Дата хранимой процедуры SQL Server
Название таблицы находится в параметрах.
Ошибка
типы данных VARCHAR (макс) и дата несовместимы в операторе добавления.
Поле даты должно быть типа date
.
ПРОЦЕДУРА
USE [ProposalBuilderDev]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[addLog]
-- Add the parameters for the stored procedure here
@table varchar(max),
@date date,
@version varchar(max),
@process varchar(max),
@level varchar(max),
@message varchar(max),
@stacktrace varchar(max),
@user varchar(max),
@environmentID varchar(max),
@UUID varchar(max),
@UDID varchar(max),
@transactionID int,
@new_identity int OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
DECLARE @sql NVARCHAR(MAX);
SET @sql = 'INSERT INTO dbo.' + @table + '([Timestamp], [Version],Process,[Level],[Message],StackTrace,[User],EnvironmentID,UUID,UDID,TransactionID) VALUES (' + @date + ',' + @version + ',' + @process + ','+ @level + ','+ @message + ','+ @stacktrace + ','+ @user + ','+ @environmentID + ','+ @UUID + ','+ @UDID + ',' + @transactionID + ')'
EXEC @sql
SET @new_identity = SCOPE_IDENTITY();
END
Я нашел это, потому что имя таблицы находится в параметре. Если у вас есть другой способ сделать это, я могу изменить – Weedoze
, все ваши таблицы имеют одинаковую спецификацию столбца и тип данных? – ughai
Да, они все одинаковые – Weedoze