Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.142.136.159] |
|
Сообщ.
#1
,
|
|
|
System.Data.Odbc.OdbcConnection cnStr = new System.Data.Odbc.OdbcConnection(); cnStr.ConnectionString = "dsn=testodb"; cnStr.Open(); System.Data.Odbc.OdbcCommand cmdStr = new System.Data.Odbc.OdbcCommand(); cmdStr.Connection = cnStr; cmdStr.CommandType = CommandType.StoredProcedure; cmdStr.CommandText = "branch.ex2008_test"; System.Data.Odbc.OdbcParameter param = new System.Data.Odbc.OdbcParameter(); param.ParameterName = "a1"; param.OdbcType = System.Data.Odbc.OdbcType.Int; param.Value = 2; param.Direction = ParameterDirection.Input; cmdStr.Parameters.Add(param); cmdStr.ExecuteNonQuery(); Почему при роботе ошибочка неверное количество параметров. Процедура елементарна ? create procedure branch.ex2008_test (IN a1 int) begin insert into branch.test(p1) values (1); end; M Используем теги оформления кода |
Сообщ.
#2
,
|
|
|
Попробуй заменить param.ParameterName = "a1"; на param.ParameterName = "?";
P.S или param.ParameterName = "@a1"; |
Сообщ.
#3
,
|
|
|
Цитата juice @ Попробуй заменить param.ParameterName = "a1"; на param.ParameterName = "?"; P.S или param.ParameterName = "@a1"; не помогло |
Сообщ.
#4
,
|
|
|
kucher, может лучше использовать не Odbc провайдер, а поискать что-то спечифическое для Sybase ?
Добавлено http://www.google.com.ua/search?q=Sybase+.NET+provider&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a |
Сообщ.
#5
,
|
|
|
Кажись я понял в чем проблема.
Sysbase при работе через ODBC драйвер требует задание вызова хранимой процедуры через щаблон следующего вида: "{?=call name_stored_procedure (?, ?, ?, ?, ?, ?, ?)}" в коде выше вызывается хранимая процедура name_stored_procedure с семью input парамметрами и одним return value поэтому строку с указанием хранимой процедуры нужно переписать так: cmdStr.CommandText = "{call branch.ex2008_test (?)}"; если парамметров много то добавлять их следует в соответствующем порядке. |
Сообщ.
#6
,
|
|
|
cmdStr.CommandText = "{call branch.ex2008_test (?)}";
то что надо спасибо. Паралельно другой вопрос. База аналогичная от Sybase через ODBC, если бить точним то Sybase SQL Anywhere 5.5 При использовании мастера для DataSet в диалоге для вибора database object можна вибрать только таблици, view, а список процедур и функций пуст почему? |
Сообщ.
#7
,
|
|
|
Цитата kucher @ - потому что DataSet строится на результатах выполнения запросов к базе, а хранимые процедуры и функции не всегда возвращают кортежи записей. а список процедур и функций пуст почему? |
Сообщ.
#8
,
|
|
|
Цитата PIL @ Цитата kucher @ - потому что DataSet строится на результатах выполнения запросов к базе, а хранимые процедуры и функции не всегда возвращают кортежи записей.а список процедур и функций пуст почему? Я думаю ти не совсем прав По моему сначала мастер должен показать хотя би список процедур а после вибора одной из них сормировать правильную sql команду хотя би для аргументов а потом анализировать возвращаемие записи. |
Сообщ.
#9
,
|
|
|
Цитата kucher @ - Я думаю ти не совсем прав логика проста: процедура может возвращать либо результаты выборки, либо скалярное значение, либо значения в out переменных. Либо все сразу или в вариациях. Компания Майкрософт решила не писать всякие сложные синтаксические анализаторы, учитывать диалекты синтаксиса SQL разных баз данных и т д, а сделала как можно проще - таблица или вид. Можешь выдвинуть им свою претензию |
Сообщ.
#10
,
|
|
|
Цитата PIL @ Цитата kucher @ - Я думаю ти не совсем прав логика проста: процедура может возвращать либо результаты выборки, либо скалярное значение, либо значения в out переменных. Либо все сразу или в вариациях. Компания Майкрософт решила не писать всякие сложные синтаксические анализаторы, учитывать диалекты синтаксиса SQL разных баз данных и т д, а сделала как можно проще - таблица или вид. Можешь выдвинуть им свою претензию С SQl серверами от Мicrosoft аналогичная проблема или там все OK? |
Сообщ.
#11
,
|
|
|
Цитата kucher @ - я очень редко пользуюсь мастерами, чаще пишу код руками - соверую посмотреть самому. С SQl серверами от Мicrosoft аналогичная проблема или там все OK? |