| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > MS SQL Server > Хранимая процедура exec sp_executesql |
| Автор: prostoia 28.4.2008, 09:50 |
| Здрасти! Кратенько о смысле задачи: селектом я определяю айди записи где есть два параметра которые приходят из программы, два адреса а_адрес и о_адрес если таковой имеется то в s_id храним значение id этой строки, и точно с таким же айди формируем запись в другой таблице и с другими входными параметрами, значения которых берутся из программы. Ошибок не выдается не в программе, не SQl не ругается все кампилируется..., вот толька результата нет, я так чувствую это ошибка в exec sp_executesql. Пожалуста знающие люди подскажите!!!!!!!!!! ... ALTER PROCEDURE [dbo].[INSERT_HOUR_TABLE] -- Add the parameters for the stored procedure here @A_ADDRESS varchar(max), @O_ADDRESS varchar(max), @VALUE real, @T datetime, @MilSec int, @Q int, @Type int, @nametabl varchar(max), --название таблицы приходит из программы @stnum varchar(max), @conf varchar(max), --название таблицы2 приходит из программы @conf_id varchar(max) --название поля приходит из программы 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 @s_id int DECLARE @s_id1 nvarchar(max) SET @s_id1 = N'SELECT @s_id= ' + @conf_id +' from ' + @conf +' s join SECTORS se on s.sector_id=se.sector_id WHERE se.A_ADDRESS= ''' + @A_ADDRESS + ''' AND s.O_ADDRESS= ''' + @O_ADDRESS + '''' exec sp_executesql @s_id1, N'@s_id int out', @s_id out if @s_id is not NULL begin Declare @SQL nvarchar(max) SET @SQL = N'INSERT INTO' + @nametabl+ '([TIMESTAMP],[MSEC],[VALUE],[QUALITY],[TREC],'+ @conf_id +')VALUES ('''+CONVERT(varchar, @T,120)+''',@MilSec,@VALUE,@Q, GETDATE(),@s_id)' exec sp_executesql @SQL, N'@T DATETIME, @MilSec INT, @VALUE FLOAT, @Q INT, @s_id INT', @T, @MilSec, @VALUE, @Q, @s_id-- с этой процедурой ошибка вероятно. end END |
| Автор: Magnifico 29.4.2008, 17:56 | ||
идет явная вставка в поле timestamp что недопустимо , в sqlserevere timestamp никакого отношения к дате-времени не имеет. полей в таблице 6 а параметров 5 (@T DATETIME, @MilSec INT, @VALUE FLOAT, @Q INT, @s_id INT') пробелов пропущено после into и перед values такой код отладки требует - нужно давать скрипты всех таблиц участвующих в запросе. |