powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / передача строкового параметра в хранимую процедуру
2 сообщений из 2, страница 1 из 1
передача строкового параметра в хранимую процедуру
    #36454089
Oblomingo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Помогите если кто сможет, я уже себе весь мозг "стоптал" этой проблемой. Есть сервер на MS SQL 2000, на нем написана куча хранимых процедур, работают они давно и без сбоев. Теперь возникла необходимость вызывать некоторые процедуры из Excel и тут произошел гигантский затык. Если процедура получает числовые параметры(adinteger например) то все работает как часы, если же необходимо передать строковый (advarchar) - то возвращается пустой набор, т.е. нет даже названий столбцов, у объекта recordset.fields всего одно свойство count равное 0.

т.е. если с примерами:

Dim Cn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

cn_string = "Строка Подключения"
Cn.Open (cn_string)

Cmd.ActiveConnection = Cn
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "Имя процедуры 1"
Cmd.Parameters.Refresh
Cmd.Parameters("@Param_1").Value = 2
Cmd.Parameters("@Param_2").Value = 123456

Set rs = Cmd.Execute

Работает отлично, а

Dim Cn As New ADODB.Connection
Dim Cmd As New ADODB.Command
Dim rs As New ADODB.Recordset

cn_string = "Строка Подключения"
Cn.Open (cn_string)

Cmd.ActiveConnection = Cn
Cmd.CommandType = adCmdStoredProc
Cmd.CommandText = "Имя процедуры 2"
Cmd.Parameters.Refresh
Cmd.Parameters("@Param_1").Value = "text"

Set rs = Cmd.Execute

Возвращает пустой набор.

Что интересно, если параметру присвоить значение Null - то возвращается тоже пустой набор но со всеми свойствами, т.е. у RecordSet.Fields.item1...itemN есть имена полей и прочие свойства. И свойство count = количеству полей.

Вызывать процедуру по разному, задавать параметры и их типы явно, отправлять параметры в Unicode или в другом формате, добавлять различные кавычки, формировать строку символами ASCII я это все пробовал, ситуация не изменяется ни на йоту. Если попробовать передать явно ошибочный параметр - возвращается сообщение об ошибке, если передать Null возвращается нормальная структура и пустой набор, если передать правильный параметр - возвращается пустой набор без структуры.

Что делать и в каком направлении копать - идей уже больше нет. Так что вот - взываю о помощи... :) Помогите кто чем сможет. :)
...
Рейтинг: 0 / 0
передача строкового параметра в хранимую процедуру
    #36454717
Oblomingo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уппсс... Сорри всем. Оказывается три дня ковырял проблему не в ту сторону. С передачей параметра проблем никаких нет, просто процедура оказывается возвращает более одного RecordSet. Так что проблема легко решилась через NextRecordset. Тему можно закрывать.
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / передача строкового параметра в хранимую процедуру
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]