Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
Привет всем в базе 1С на Sql существует процедура, с помощью которой пытаюсь вернуть из нее результат блокировки 1 или 0


USE [SMP_2018]
GO
/****** Object:  StoredProcedure [dbo].[ygmp_1sp_RG1260_TLockX]    Script Date: 07/30/2018 16:50:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ygmp_1sp_RG1260_TLockX] AS
set nocount on declare @i integer select @i=1 from RG1260 WITH (TABLOCKX, HOLDLOCK) where 0=1


если на самой хранимой проц. sql щелкнуть правой кнопкой мыши,и вызвать пункт меню выполнить хранимую процедуру
то процедура возвращает 0


код в 1С стандартный

пСтрСоед = "driver={SQL Server};"+"server="+СокрЛП("Test1c")+";"+"uid="+СокрЛП(Login)+"; "+"pwd="+СокрЛП(Password)+";"+"Database="+СокрЛП("SMP_2018");
 
GlobalConnection = Новый COMОбъект("ADODB.Connection"); 
GlobalConnection.Provider = "SQLOLEDB"; 
GlobalConnection.ConnectionTimeout = 15; 
GlobalConnection.CommandTimeOut    = 30; 
GlobalConnection.ConnectionString = пСтрСоед; 
GlobalConnection.Open();
GlobalCommand = Новый COMОбъект("ADODB.Command"); 
GlobalCommand.ActiveConnection = GlobalConnection; 
GlobalCommand.CommandType = 4; 
GlobalCommand.CommandText = "ygmp_1sp_RG1260_TLockX"; 
GlobalRecordSet = GlobalCommand.Execute(); 
NewID = GlobalCommand.Parameters("@i").Value; ///// 
Предупреждение(NewID); 
GlobalConnection.Close(); 


выдает NewID = GlobalCommand.Parameters("@i").Value;
по причине:
Произошла исключительная ситуация (ADODB.Command): В коллекции не удается найти элемент, соответствующий требуемому имени или порядковому номеру.

в самой хранимой процедуре процедуре пробывал ставить Return
что бы вернулся результат но бесполезно,подскажите куда рыть ?
30 июл 18, 17:05    [21615644]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
пытаюсь достучаться так
  GlobalCommand.Parameters(0).Value  ///////пишет не определено 
30 июл 18, 17:09    [21615664]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36694
Результат выполнения процедуры содержится в параметре @return_value. Это если вы его предварительно из процедуры верунли командой return.
30 июл 18, 17:10    [21615667]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
YanMalyakov,

я не специалист, но в каких случаях что-то вернёт при 0=1
30 июл 18, 17:10    [21615668]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
Сергей Алексеевич,подскажите плиз

вот результат выполнения хранимки
  

USE [SMP_2018]
GO

DECLARE	@return_value int

EXEC	@return_value = [dbo].[ygmp_1sp_RG1260_TLockX]

SELECT	'Return Value' = @return_value

GO
 возвращает он  0
в 1

 


в Sql делаю так

USE [SMP_2018]
GO
/****** Object:  StoredProcedure [dbo].[ygmp_1sp_RG1260_TLockX]    Script Date: 07/30/2018 17:22:22 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[ygmp_1sp_RG1260_TLockX] AS
set nocount on declare @i integer
declare @return_value integer
 select @i=1 from RG1260 WITH (TABLOCKX, HOLDLOCK) where 0=1
set  @return_value = @i
return  @return_value

блин всё равно не взлетает
30 июл 18, 17:23    [21615710]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
YanMalyakov,

Печально...

автор
Return a status value to a calling procedure or batch to indicate success or failure (and the reason for failure).
30 июл 18, 17:28    [21615728]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
чего делать то ? ощущение что где то неправильно написал, а где не доходит ......
30 июл 18, 17:31    [21615738]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
YanMalyakov,

Если не взлетает в голове, то у вас @i всегда NULL
30 июл 18, 17:32    [21615741]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
CREATE OR ALTER PROC dbo.a1
AS
	DECLARE @i INT = 1
	SELECT @i = 500 WHERE 1= 0
	RETURN @i

GO

DECLARE	@return_value int

EXEC @return_value = dbo.a1

SELECT	'Return Value' = @return_value
30 июл 18, 17:33    [21615746]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
TaPaK,
на самом деле это стандартная процедура в 1С
которая контролирует регистр Остатки товаров

USE [SMP_2018]
GO
/****** Object:  StoredProcedure [dbo].[_1sp_RG1260_TLockX]    Script Date: 07/30/2018 17:35:23 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[_1sp_RG1260_TLockX] AS
set nocount on declare @i integer select @i=1 from RG1260 WITH (TABLOCKX, HOLDLOCK) where 0=1


а я только лишь пытаюсь получить из неё результат.
попытался превратить её в такую
не выходит


ALTER PROCEDURE [dbo].[ygmp_1sp_RG1260_TLockX] AS
set nocount on declare @i integer
declare @return_value integer
 select @i=1 from RG1260 WITH (TABLOCKX, HOLDLOCK) where 0=1
set  @return_value = @i
return  @return_value
30 июл 18, 17:38    [21615767]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Значений возврата, у вас в сообщениях написано:

автор
The '...' procedure attempted to return a status of NULL, which is not allowed. A status of 0 will be returned instead.
30 июл 18, 17:38    [21615770]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
YanMalyakov,

Я понимаю что одинэсники должны страдать всегда... Но вы можете хоть целый день запускать "стандартную процедуру" которая ничего кроме 0 вернуть не может(разве что сфейлится)
30 июл 18, 17:40    [21615778]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
TaPaK,как можно с Вами связаться лично ? к сожалению Ваши контактные данные скрыты.
мне нужна или платная консультация или сотрудничество на платной основе.
суть задачи : с помощью sql нужно распаралелить процессы что бы юзеру выдавалось сообщение о том что
процесс в настояще время занят и он не может осуществлять проведение.
30 июл 18, 17:49    [21615812]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
YanMalyakov,

ваш вариант sp_getapplock
30 июл 18, 17:52    [21615821]     Ответить | Цитировать Сообщить модератору
 Re: Не могу вернуть результат Хранимой процедуры,из базы 1С  [new]
YanMalyakov
Member

Откуда: Краснодар
Сообщений: 36
TaPaK, Спасибо !
30 июл 18, 17:59    [21615863]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить