Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Выполнение хранимой процедуры (число прочтений - 4775 )
nobucks
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 17. Октября 2006
Выполнение хранимой процедуры
18. Октября 2006 :: 07:44
Печать  
Привет всем!
Надо из 1с выполнить хранимую процедуру на MS SQL и получить параметр обратно, через 1срр что-то не получается...

Процедура на SQL
Код
Выбрать все
CREATE PROCEDURE P (@P1 Integer OUTPUT)
AS
	Insert into [dbo].[Table2_2] Values (@P1)
	SET @P1 = @P1 + @P1
GO
 



на 1с  пишу так...
Код
Выбрать все
	БД=СоздатьОбъект("ODBCDatabase");
	БД.Соединение("Driver={SQL Server};Server=serv;Database=DB;Uid=U;Pwd=P;");
	Если БД.ЕстьСоединение()=0 Тогда
		предупреждение("Нет сединения");
	КонецЕсли;

	РекСет=СоздатьОбъект("ODBCRecordSet");
	РекСет.УстБД(БД);

	РекСет.ДобПараметр(3,4,3,0,"@P1");

	РекСет.УстПараметр(1,333);

	Если РекСет.Выполнить("P")=0 Тогда
		Сообщить(РекСет.ПолучитьОписаниеОшибки());
	КонецЕсли;
 



ничего на SQL не выполняет и ПолучитьОписаниеОшибки() возвращает пустую строку...

еще пишу вот так...

Код
Выбрать все
	БД=СоздатьОбъект("ODBCDatabase");
	БД.Соединение("Driver={SQL Server};Server=serv;Database=DB;Uid=U;Pwd=P;");
	Если БД.ЕстьСоединение()=0 Тогда
		предупреждение("Нет сединения");
	КонецЕсли;

	РекСет=СоздатьОбъект("ODBCRecordSet");
	РекСет.УстБД(БД);

	Если РекСет.Подготовить("P ?")=0 Тогда
		Возврат;
	КонецЕсли;

	Если РекСет.ПостроитьПараметры()=1 Тогда
		Возврат;
	КонецЕсли;

	  РекСет.УстПараметр(1,333);

	Если РекСет.Выполнить()=0 Тогда
		Сообщить(РекСет.ПолучитьОписаниеОшибки());
	КонецЕсли;
 



после РекСет.Выполнить() ПолучитьОписаниеОшибки() возвращает - State 07009, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимый индекс дескриптора

Подскажите плз, это я не догоняю чегото или это априори не работает?
  
Наверх
 
IP записан
 
TroYur
Junior Member
**
Отсутствует



Сообщений: 24
Зарегистрирован: 17. Октября 2006
Re: Выполнение хранимой процедуры
Ответ #1 - 18. Октября 2006 :: 11:24
Печать  
Попробуй:
Код
Выбрать все
РекСет.Подготовить("execute procedure Р(?)")
 

  
Наверх
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Выполнение хранимой процедуры
Ответ #2 - 18. Октября 2006 :: 11:33
Печать  
http://www.1cpp.ru/forum/YaBB.pl?num=1160124341/7
может это поможет...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
nobucks
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 17. Октября 2006
Re: Выполнение хранимой процедуры
Ответ #3 - 18. Октября 2006 :: 12:44
Печать  
TroYur писал(а) 18. Октября 2006 :: 11:24:
Попробуй:
Код
Выбрать все
РекСет.Подготовить("execute procedure Р(?)")
 



Попробовал так...
Код
Выбрать все
	Если РекСет.Подготовить("execute procedure Р(?)")=0 Тогда
		Сообщить("Подг - "+РекСет.ПолучитьОписаниеОшибки());
		Возврат;
	КонецЕсли;

	Если РекСет.ПостроитьПараметры()=0 Тогда
		Сообщить("ПП - "+РекСет.ПолучитьОписаниеОшибки());
		Возврат;
	КонецЕсли;

	Сообщить(РекСет.КолвоПараметров());

	РекСет.УстПараметр(1,333);

	Если РекСет.Выполнить()=0 Тогда
		Сообщить("Вып - "+РекСет.ПолучитьОписаниеОшибки());
	КонецЕсли; 



выводит ПП - State 07009, native 0, message [Microsoft][ODBC SQL Server Driver]Недопустимый номер параметра

  
Наверх
 
IP записан
 
nobucks
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 17. Октября 2006
Re: Выполнение хранимой процедуры
Ответ #4 - 18. Октября 2006 :: 12:45
Печать  
Цитата:
http://www.1cpp.ru/forum/YaBB.pl?num=1160124341/7
может это поможет...


ничего там не нашел... Печаль
  
Наверх
 
IP записан
 
TroYur
Junior Member
**
Отсутствует



Сообщений: 24
Зарегистрирован: 17. Октября 2006
Re: Выполнение хранимой процедуры
Ответ #5 - 18. Октября 2006 :: 12:52
Печать  
а процедура-то создается?
  
Наверх
IP записан
 
nobucks
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 17. Октября 2006
Re: Выполнение хранимой процедуры
Ответ #6 - 18. Октября 2006 :: 13:00
Печать  
TroYur писал(а) 18. Октября 2006 :: 12:52:
а процедура-то создается?


Код выполняется
Код
Выбрать все
РекСет.Выполнить("P 333") 

  
Наверх
 
IP записан
 
villy
Senior Member
****
Отсутствует



Сообщений: 287
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Выполнение хранимой процедуры
Ответ #7 - 18. Октября 2006 :: 14:14
Печать  
nobucks писал(а) 18. Октября 2006 :: 12:45:
Цитата:
http://www.1cpp.ru/forum/YaBB.pl?num=1160124341/7
может это поможет...


ничего там не нашел... Печаль


плохо читал
  
Наверх
IP записан
 
nobucks
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 9
Зарегистрирован: 17. Октября 2006
Re: Выполнение хранимой процедуры
Ответ #8 - 18. Октября 2006 :: 14:47
Печать  
Цитата:
nobucks писал(а) 18. Октября 2006 :: 12:45:
Цитата:
http://www.1cpp.ru/forum/YaBB.pl?num=1160124341/7
может это поможет...


ничего там не нашел... Печаль


плохо читал


Увидел, спасибо!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать