09.02.2020 22:31
Beses
 
Добрый вечер, форумчани, есть проблема не могу выгрузить из базы данных супермага данные документов в буферную базу выдает такую ошибку
Сообщение 50000, уровень 16, состояние 1, процедура insRABSODDNovus, строка 44
Error converting data type nvarchar to int.

Запрос который запускаю
--Выгрузка из Киева--
declare @datu datetime;
set @datu = GETDATE();
execute dbo.insRABFOLDNovus '2020-01-23', @datu; --заголовки документов
execute dbo.insRABSODDNovus '2020-01-23', @datu; -- содержимое документов
execute dbo.insTovarNovus '2020-01-23', @datu; --Справочник Товаров
execute dbo.insKlientNovus

Данный запрос запускает скрипт
Скрипт который отрабатывает

USE [buffer]
GO
/****** Object: StoredProcedure [dbo].[insRABSODDNovus] Script Date: 03.02.2020 9:52:07 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROC [dbo].[insRABSODDNovus]
@DateLoad date = null,
@dateunload datetime = null

as
DECLARE @vdateload nvarchar(20);
DECLARE @sqltext nvarchar(2000);
DECLARE @vdateunload nvarchar(20);

SET NOCOUNT ON;
BEGIN TRY
-- Если не задали дату значит дата текущая
set @DateLoad=IsNull(@DateLoad,CONVERT(DATE, GETDATE()));
set @dateunload=IsNull(@dateunload,GETDATE());

-- Устанавливаем дату загрузки
set @vdateload = convert(nvarchar(20),@DateLoad,104);

-- Устанавливаем дату выгрузки
set @vdateunload = convert(nvarchar(20),@dateunload,120);

--Формируем текст запроса
set @sqltext= 'select KOD,TYPD,KODTOV,CU,KOLPR,
KOLRS,CO,NDS,AKZ,TYPOPL,DATE_UNLOAD
from openquery(OrclDB,
''select * from TABLE
(SUPERMAG.NOVUS_KVINT.fGetRabSod('''''+@vdateload+''''''+',
'+''''''+@vdateunload + '''''))'')';

-- Вставка данных строк документов
insert into buffer.dbo.RABSOD(KOD,TYPD,KODTOV,
CU,KOLPR,KOLRS,CO,NDS,AKZ,TypOpl,DTML)
execute sp_executesql @sqltext;

-- Вставка данных строк документов в rabsod_backup_new
insert into buffer.dbo.RABSOD_backup_new(KOD,TYPD,KODTOV,
CU,KOLPR,KOLRS,CO,NDS,AKZ,TypOpl,DTML)
execute sp_executesql @sqltext;

END TRY
BEGIN CATCH
DECLARE @ErrorMessage nvarchar(4000), @ErrorSeverity int;
SELECT @ErrorMessage = ERROR_MESSAGE(),@ErrorSeverity = ERROR_SEVERITY();
RAISERROR(@ErrorMessage, @ErrorSeverity, 1);
END CATCH;

Что означает данная ошибка указанная мною выше в тексте, это что не может преобразовать строку в число, как можно узнать где именно произошел сбой.
Так как я не могу загрузить в другую систему около 600 документов.
10.02.2020 00:19
baggio
 
SUPERMAG.NOVUS_KVINT.fGetRabSod
Судя вот по этому...
У вас там что то самописное...
Думаю дорога вам лежит к тому кто эту схему загрузки настраивал...
10.02.2020 07:04
OlegON
 
Попробуйте не указывать дату, т.е. чтобы взялась текущая.
Во-первых, слишком много данных не указали, в т.ч. строки ошибок, и часть кода, как, например, указал baggio.
Во-вторых, код писал какой-то далекий от программирования человек, слишком вольно обращающийся с неявным приведением типов. Подозреваю, что и в скрытых частях гора ошибок.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.