Форум программистов, компьютерный форум, киберфорум
Наши страницы
C#: Базы данных, ADO.NET
Войти
Регистрация
Восстановить пароль
 
Demo_Dem
4 / 4 / 1
Регистрация: 01.09.2014
Сообщений: 54
1

Вызов хранимой процедуры в FirebirdSQL

19.07.2016, 10:16. Просмотров 342. Ответов 1
Метки нет (Все метки)

Вызываю хранимую процедуру в FirebirdSQL. Вот так:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            FbCommand res = new FbCommand("SP_SET_TEST_DATA");
            res.CommandType = System.Data.CommandType.StoredProcedure;
            res.Parameters.AddWithValue("I_ACTIV", 1);
            res.Parameters.AddWithValue("I_NAME", "Какое то имя");
            res.Parameters.Add(new FbParameter
            {
                FbDbType = FbDbType.Integer,
                Direction = System.Data.ParameterDirection.Output,
                ParameterName = "O_RES"
            });
            res.Connection = DBConnection;
            res.ExecuteNonQuery();
Хранимая процедура вот такая:
SQL
1
2
3
4
5
6
7
8
9
10
ALTER PROCEDURE SP_SET_TEST_DATA(
  I_NAME VARCHAR(255),
  I_ACTIV SMALLINT)
RETURNS(
  O_RES INTEGER)
AS
BEGIN
  O_RES = 1;
  SUSPEND;
END
И вот так падает на ExecuteNonQuery с ошибкой "входная строка имела не верный формат"
При этом экспериментальным путем было определено, что вот это прекрасно работает:
C#
1
2
3
4
5
6
7
8
9
10
11
12
            FbCommand res = new FbCommand("SP_SET_TEST_DATA");
            res.CommandType = System.Data.CommandType.StoredProcedure;
            res.Parameters.AddWithValue("I_NAME", "Какое то имя");
            res.Parameters.AddWithValue("I_ACTIV", 1);
            res.Parameters.Add(new FbParameter
            {
                FbDbType = FbDbType.Integer,
                Direction = System.Data.ParameterDirection.Output,
                ParameterName = "O_RES"
            });
            res.Connection = DBConnection;
            res.ExecuteNonQuery();
Получается, что Firebird глубоко пофиг, что параметры у меня именованные и он в первом случае пытается привести строку "Какое то имя" к типу SmallInt. Вот отсюда вопрос - это я что-то делаю не так или FB тупит?
P.S. Версия FirebirdSQL 2.5, версия FirebirdSql.Data.FirebirdClient.dll 5.0.5, версия NET.Framework 4.5, VS 2012 (короче все относительно свежачок).
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.07.2016, 10:16
Ответы с готовыми решениями:

Вызов хранимой процедуры в с#
Хочу обновить бд с помощью хранимой процедуры ALTER procedure . @id_TP int, @id_worker int, @DT...

Вызов хранимой процедуры
Добрый день У меня есть процедура хранимая в MySQL на добавление строки CREATE DEFINER =...

Вызов хранимой процедуры
есть хранимая процедура. Надо ее вызвать и что бы она заменила один столбец в БД. если что проект...

Вызов хранимой процедуры
Как вызвать хранимую процедуру в БД Access через Viasual Studio 2015 Community. Хранимые процедуры:...

Вызов хранимой процедуры
Привет! У меня есть база данных и запрос, написанный на SQL в сишарпе. Таблица из базы данных...

1
jcp
100 / 22 / 12
Регистрация: 12.12.2013
Сообщений: 200
Записей в блоге: 1
Завершенные тесты: 2
26.07.2016, 08:33 2
Цитата Сообщение от Demo_Dem Посмотреть сообщение
res.Parameters.AddWithValue("I_NAME", "Какое то имя");
* * * * * * res.Parameters.AddWithValue("I_ACTIV", 1);
Смущают меня, как передаются параметры.

Добавлено через 6 минут
Цитата Сообщение от jcp Посмотреть сообщение
Сообщение от Demo_Dem
res.Parameters.AddWithValue("I_NAME", "Какое то имя");
* * * * * * res.Parameters.AddWithValue("I_ACTIV", 1);
Смущают меня, как передаются параметры.
Ну и пример
C#
1
2
3
4
5
6
7
8
9
10
FbTransaction trn = fb.BeginTransaction();
                FbCommand prc = new FbCommand("PR_ADD_ITEM", fb,trn);
                prc.CommandType = System.Data.CommandType.StoredProcedure;
                prc.Parameters.Add("@p_cur_date", FbDbType.Date).Value = "1901.01.01";
                prc.Parameters.Add("@p_name", FbDbType.VarChar).Value = "впааппап";
                prc.Parameters.Add("@p_matcol", FbDbType.Integer).Value = "1214";
                prc.Parameters.Add("@p_matcen", FbDbType.Float).Value = "16";
               prc.ExecuteNonQuery(); 
                trn.Commit();
            fb.Close();
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.07.2016, 08:33

Вызов хранимой процедуры
Здравствуйте, помогите пожалуйста. Мне нужно сделать, чтобы на форму в ЛистБокс выводилась...

Вызов хранимой процедуры из MySQL
Сразу скажу что в vs 2010 работал мало и только перехожу на него с Delphi, поэтому прошу сильно не...

Вызов хранимой процедуры в форме
Доброго времени суток. В C# я ламер. Стоит visual studio, SQL Server 2008. Есть хранимая процедура...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru