|
Внешние источники данных вызов функции | ☑ | ||
---|---|---|---|---|
0
Наська72
27.05.14
✎
09:09
|
Добрый день!
Есть внешний источник данных SQL БД, подключаюсь к ней драйвером SQL Server Native Client 10.0. Работаю с таблицами. Всё хорошо. И вот возник вопрос: могу ли вызывать функции прописанные в БД? Как туда передавать параметры? Перерыла все, ничего не нашла. Попробовала в источник данных добавить вручную таблицу с именем функции, но что-то не представляю как потом в нее параметры передавать. Будьте добры, помогите. |
|||
1
vmv
27.05.14
✎
09:32
|
ежик и ужик в естественной среде не скрещиваються
это можно сделать только неприродным путем |
|||
2
Наська72
27.05.14
✎
09:35
|
(1) Расскажите про неприродный путь. Уже на все согласна. Проще функцию вызвать, чем эти жуткие связи проследить.
|
|||
3
Наська72
27.05.14
✎
09:48
|
(1) Допустим подключимся через СОМ:
Connection = Новый COMОбъект("ADODB.Connection"); СтрокаПодключения = "Provider=SQLOLEDB.1;Password=ПАРОЛЬ;Persist Security Info=True;User ID=ЮЗЕР;Initial Catalog=ИМЯБАЗЫ; Data Source=СЕРВЕР;"; Результат = Новый COMОбъект("ADODB.Command"); Результат.ActiveConnection = Connection; Результат.CommandType = "fGetPowTrN"; В последней строке пишу имя функции. Как в нее параметры поместить? |
|||
4
ДенисЧ
27.05.14
✎
09:52
|
(3) .Parameters.Add() ?
|
|||
5
ДенисЧ
27.05.14
✎
09:52
|
.Append(), пардон
' Open Connection Conn set ccmd = CreateObject("ADODB.Command") ccmd.Activeconnection= Conn ccmd.CommandText="SPWithParam" ccmd.commandType = 4 'adCmdStoredProc ccmd.parameters.Append ccmd.CreateParameter(, adInteger, adParamReturnValue, , NULL) ' return value ccmd.parameters.Append ccmd.CreateParameter("InParam", adVarChar, adParamInput, 20, "hello world") ' input parameter ccmd.parameters.Append ccmd.CreateParameter("OutParam", adVarChar, adParamOuput, 20, NULL) ' output parameter ccmd.execute() ' Access ccmd.parameters(0) as return value of this stored procedure ' Access ccmd.parameters("OutParam") as the output parameter of this stored procedure. http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms675869(v=vs.85).aspx |
|||
6
Наська72
27.05.14
✎
12:47
|
(5) Спасибо.
Но есть проблемка. Функция принимает два параметра типа integer. Результат текст. ФункцияfGetNameIstPitB04 = Новый COMОбъект("ADODB.Command"); ФункцияfGetNameIstPitB04.ActiveConnection = Connection; ФункцияfGetNameIstPitB04.CommandText = "fGetNameIstPitB04"; //ФункцияfGetPowTrN.CommandType = 4; Parameter = ФункцияfGetNameIstPitB04.CreateParameter("Id", 14); ФункцияfGetNameIstPitB04.Parameters.Append(Parameter); Parameter.Value = 20; Parameter1 = ФункцияfGetNameIstPitB04.CreateParameter("num_ip", 14); ФункцияfGetNameIstPitB04.Parameters.Append(Parameter1); Parameter1.Value = 1; RecordSet = Новый COMОбъект("ADODB.RecordSet"); RecordSet = ФункцияfGetNameIstPitB04.Execute(); Выдает ошибку: Ошибка при вызове метода контекста (Execute) RecordSet = ФункцияfGetNameIstPitB04.Execute(); по причине: Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимая точность. Правильно ли я указала тип в ФункцияfGetNameIstPitB04.CreateParameter("Id", 14)? |
|||
7
Яйца 1С
27.05.14
✎
12:47
|
(0) Параметры или триггеры?
|
|||
8
Наська72
27.05.14
✎
12:52
|
(7) Вопрос о передаче Параметров в Функцию.
|
|||
9
Наська72
27.05.14
✎
13:57
|
Сама себе отвечу. Вот типы http://msdn.microsoft.com/en-us/library/windows/desktop/ms675318(v=vs.85).aspx
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |