При разработке приложения. Мне нужна динамическая хранимая процедура, где я вызываю имя таблицы (@pxxx), и я также передал те же параметры - здесь у меня есть 2 (datum, por). Он работает хорошо, передавая имя файла как @pxxx - o.k. Также, когда параметром datum, por являются type -int или varchar, или char или его комбинация. Int Я перехожу в varchar через CONVERT - процедура идет хорошо. Хорошо ig собирается звонить с C#. Проблема в том, что я изменяю параметр -datum на datetime. Это не работает. Изменение даты «конвертировать» в varchar не помогло. Он не работает в студии управления sql. Мне нужно решить проблему, потому что мне нужно в таблице datum [datetime], Я не могу изменить определение таблицы, datetime требуется. Я искал почти все вопросы о прохождении параметров и динамических хранимых процедурах sql, но я не нашел решения.Параметры хранимой процедуры SQL Server-РАЗЛИЧНЫЕ типы
определения таблицы в MS SQL 2005:
CREATE TABLE [dbo].[p001](
[id] [bigint] IDENTITY(1,1) NOT NULL,
[datum] [datetime] NULL,
[por] [int] NULL,
[cas] [nchar](5) NULL,
[max] [int] NULL,
[obsad] [int] NULL,
[blok] [bit] NULL
one of it) ON [PRIMARY]
Моя хранимая процедура - не работает
ALTER PROCEDURE [dbo].[SPinsertpxx2] (@pxxx nchar(4),@date datetime, @por int)
AS
DECLARE @sqlCommand varchar(500)
SET @sqlCommand = 'INSERT INTO '+ @pxxx +' ([datum],[por]) VALUES('
+CONVERT(VARCHAR,@date,112)+','+CONVERT(VARCHAR,@por,5)+')'
BEGIN
EXEC (@sqlCommand)
END
Эта хранимая процедура - работает хорошо, но только withous параметр DateTime.
ALTER PROCEDURE [dbo].[SPinsertpxxx] (@pxxx nchar(4),@cas nvarchar(10), @por int)
AS
DECLARE @sqlCommand varchar(500)
SET @sqlCommand = 'INSERT INTO '+ @pxxx +' ([cas],[por]) VALUES('
+CONVERT(VARCHAR,@cas)+','+CONVERT(VARCHAR,@por)+')'
BEGIN
EXEC (@sqlCommand)
END
не помогло, поэтому 114, или изменение языка на британский. –
Ошибка msg> не удалось при преобразовании даты и времени из символьной строки. Я читал, что в динамической sql-команде должна быть строка (varchar). И каждый параметр, поэтому я конвертирую с помощью CONVERT (VARCHAR, @ parameter), он помог для int, но не datetime –
У вас есть несколько проблем, которые происходят здесь. Сначала вы должны параметризовать свой динамический sql, чтобы предотвратить внедрение sql. Также вы конвертируете в varchar, но не указываете длину. Мой вопрос в том, что вы вставляете в столбец datetime, почему вы передаете varchar? Вам также необходимо определить «не работает». Что это значит? –