Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вызов хранимых процедур Oracle из ASP.NET / 25 сообщений из 26, страница 1 из 2
11.05.2015, 15:41
    #38955768
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Приветствую всех!

Я новичок в ASP.NET поэтому прошу сразу не судить! Недавно начал изучать ASP.NET, подключился к Oracle с помощью провайдера .net framework Data Provider for Oracle, все отлично. Теперь следующий вопрос как выполнить процедуру SELECT с параметрами и INSERT с параметрами oracle из asp.net:

Процедура Select:
create or replace procedure phone_select
(in_fname in varchar,
in_sname in varchar,
in_city in varchar,
cur out sys_refcursor) is
begin
open cur for

select
p.id,
p.fname,
p.sname,
p.lname,
p.city,
p.tel_number
from phone p

where 1=1
and NVL(p.fname,0) like '%' || NVL(in_fname, p.fname) || '%'
and NVL(p.sname,0) like '%' || NVL(in_sname, p.sname) || '%'
and NVL(p.city,0) like '%' || NVL(in_city, p.city) || '%';

end phone_select;
============================================================
Процедура Insert:
CREATE OR REPLACE PROCEDURE phone_insert(in_id in out integer,
in_fname in varchar2,
in_sname in varchar2,
in_lname in varchar2,
in_city in varchar2,
in_tel_number in varchar2) IS
BEGIN
SELECT phone_SEQ.NEXTVAL INTO in_id FROM dual;
insert into phone
(id,
fname,
sname,
lname,
city,
tel_number)
values
(in_id,
in_fname,
in_sname,
in_lname,
in_city,
in_tel_number);

COMMIT;
END phone_insert;
...
Рейтинг: 0 / 0
11.05.2015, 15:46
    #38955770
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Askat,
Так же как и в случае с SQL Server.
...
Рейтинг: 0 / 0
11.05.2015, 15:47
    #38955772
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
...
Рейтинг: 0 / 0
11.05.2015, 15:48
    #38955773
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Axeleron,

в интернете не нашел примера, везде запросы прописываются в коде, а как выполнить процедуры с параметрами не нашел, примерчик не скинете?!
...
Рейтинг: 0 / 0
11.05.2015, 15:48
    #38955774
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Shocker.Pro, молодцом
...
Рейтинг: 0 / 0
11.05.2015, 15:51
    #38955775
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Askatв интернете не нашел примера, везде запросы прописываются в коде, а как выполнить процедуры с параметрами не нашел, примерчик не скинете?!
вот , например
...
Рейтинг: 0 / 0
11.05.2015, 15:51
    #38955776
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
CREATE OR REPLACE PROCEDURE phone_insert(in_id in out integer,
                                        in_fname in varchar2,
                                        in_sname in varchar2,
                                        in_lname in varchar2,
                                        in_city in varchar2,
                                        in_tel_number in varchar2) IS
BEGIN
  SELECT phone_SEQ.NEXTVAL INTO in_id FROM dual;
  insert into phone
    (id,
    fname,
    sname,
    lname,
    city,
    tel_number)
  values
    (in_id,
    in_fname,
    in_sname,
    in_lname,
    in_city,
    in_tel_number);

  COMMIT;
END phone_insert;



Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
create or replace procedure phone_select
    (in_fname       in varchar,
    in_sname        in varchar, 
    in_city         in varchar,
    cur           out sys_refcursor) 

is
begin
  open cur for
  
  select 
       p.id, 
       p.fname, 
       p.sname, 
       p.lname, 
       p.city, 
       p.tel_number 
  from phone p
           
       where 1=1
       and NVL(p.fname,0) like '%' || NVL(in_fname, p.fname) || '%'
       and NVL(p.sname,0) like '%' || NVL(in_sname, p.sname) || '%'
       and NVL(p.city,0) like '%' || NVL(in_city, p.city) || '%';
       
end phone_select;
...
Рейтинг: 0 / 0
11.05.2015, 15:53
    #38955777
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AxeleronAskatв интернете не нашел примера, везде запросы прописываются в коде, а как выполнить процедуры с параметрами не нашел, примерчик не скинете?!
вот , например

По моему это для SQL Server, а это точно подойдет для Oracle?
...
Рейтинг: 0 / 0
11.05.2015, 15:54
    #38955778
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Надеюсь разницы нет
...
Рейтинг: 0 / 0
11.05.2015, 16:03
    #38955787
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AskatAxeleronпропущено...

вот , например

По моему это для SQL Server, а это точно подойдет для Oracle?
Ну, само разумеется, только замените SqlDbType на соответствующий тип для Oracle.
...
Рейтинг: 0 / 0
11.05.2015, 16:17
    #38955793
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Axeleron,

Ругается на "dc" в разделе using (SqlConnection con = new SqlConnection(dc.Con)) и на OracleDbType красным подчеркиваются:
что не так делаю?

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
        protected void Button1_Click(object sender, EventArgs e)
        {
            using (SqlConnection con = new SqlConnection(dc.Con))
            {
                using (SqlCommand cmd = new SqlCommand("phone_insert", con))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add("in_fname",      OracleDbType.Varchar2).Value = tbFname.Text;
                    cmd.Parameters.Add("in_sname",      OracleDbType.Varchar2).Value = tbSname.Text;
                    cmd.Parameters.Add("in_lname",      OracleDbType.Varchar2).Value = tbLName.Text;
                    cmd.Parameters.Add("in_city",       OracleDbType.Varchar2).Value = tbCity.Text;
                    cmd.Parameters.Add("in_tel_number", OracleDbType.Varchar2).Value = tbTelNumber.Text;

                    con.Open();
                    cmd.ExecuteNonQuery();
                }
            }
        }
...
Рейтинг: 0 / 0
11.05.2015, 16:26
    #38955800
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AskatРугается на "dc" в разделе using (SqlConnection con = new SqlConnection(dc.Con)) и на OracleDbType красным подчеркиваются:
что не так делаю?

Избавляемся от всех МС-скульных классов и заменяем на оракловский. Видимо OleDB?
...
Рейтинг: 0 / 0
11.05.2015, 16:29
    #38955802
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
OracleConnection, OracleCommand
...
Рейтинг: 0 / 0
11.05.2015, 16:31
    #38955803
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Axeleron,


ааа ясно! СПС!
...
Рейтинг: 0 / 0
11.05.2015, 16:36
    #38955806
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AxeleronOracleConnection, OracleCommand

Использую провайдер .NET Framework Data Provider for Oracle, прописал OracleConnection, OracleCommand выделяется красным?!
...
Рейтинг: 0 / 0
11.05.2015, 16:42
    #38955809
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
прицепил класс using System.Data.OracleClient; но и там "OracleClient" ошибка! Провайдер устаревший чтоль???
...
Рейтинг: 0 / 0
11.05.2015, 16:48
    #38955814
Изопропил
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
откуда растёт идея зашивать в говнокод конкрктный провайдер?
...
Рейтинг: 0 / 0
11.05.2015, 17:54
    #38955852
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Короче с провайдером разобрался!

при запуске:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
 protected void Button1_Click(object sender, EventArgs e)
        {
            OracleConnection con = new OracleConnection(connectionString);
            OracleCommand cmd = new OracleCommand("PHONE_INSERT", con);
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Parameters.Add("in_fname",      OracleDbType.Varchar2, tbFname.Text, ParameterDirection.Input);
            cmd.Parameters.Add("in_sname",      OracleDbType.Varchar2, tbSname.Text, ParameterDirection.Input);
            cmd.Parameters.Add("in_lname",      OracleDbType.Varchar2, tbLName.Text, ParameterDirection.Input);
            cmd.Parameters.Add("in_city",       OracleDbType.Varchar2, tbCity.Text, ParameterDirection.Input);
            cmd.Parameters.Add("in_tel_number", OracleDbType.Varchar2, tbTelNumber.Text, ParameterDirection.Input);
            //cmd.Parameters.Add("in_id", OracleDbType.Int32, 256, null, ParameterDirection.Output); // это выходной параметр
            con.Open();
            cmd.ExecuteNonQuery();
            con.Close();
        }





выходит вот такая ошибка:
ORA-06550: line 1, column 7:
PLS-00306: wrong number or types of arguments in call to 'PHONE_INSERT'
ORA-06550: line 1, column 7:
PL/SQL: Statement ignored
...
Рейтинг: 0 / 0
11.05.2015, 18:35
    #38955874
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Askat,
Что-то с параметром in_id in out integer явно не то...
...
Рейтинг: 0 / 0
11.05.2015, 18:36
    #38955876
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Axeleron,

Наверное, надо его последним входящим элементом объявить в процедуре, а
Код: c#
1.
cmd.Parameters.Add("in_id", OracleDbType.Int32, 256, null, ParameterDirection.Output);


раскоментить.
...
Рейтинг: 0 / 0
11.05.2015, 18:38
    #38955878
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AxeleronAxeleron,

Наверное, надо его последним входящим элементом объявить в процедуре, а
Код: c#
1.
cmd.Parameters.Add("in_id", OracleDbType.Int32, 256, null, ParameterDirection.Output);


раскоментить.


теперь такая ошибка ORA-06502: PL/SQL: numeric or value error: character to number conversion error
ORA-06512: at line 1
...
Рейтинг: 0 / 0
11.05.2015, 18:54
    #38955888
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Askat,
А phone_SEQ.NEXTVAL - небось не типа Integer в таблице?
...
Рейтинг: 0 / 0
11.05.2015, 19:21
    #38955901
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AxeleronAskat,
А phone_SEQ.NEXTVAL - небось не типа Integer в таблице?


Это всего лижь навсего сиквэнс, исполняется в базе данных и никакого отношения не имеет
...
Рейтинг: 0 / 0
11.05.2015, 19:36
    #38955908
Axeleron
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
Askatи никакого отношения не имеет
Очень даже и имеет - вы его в переменную in_id типа Integer пихаете. А phone_SEQ.NEXTVAL, похоже, строковая переменная.
...
Рейтинг: 0 / 0
11.05.2015, 19:58
    #38955915
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Вызов хранимых процедур Oracle из ASP.NET
AxeleronAskatи никакого отношения не имеет
Очень даже и имеет - вы его в переменную in_id типа Integer пихаете. А phone_SEQ.NEXTVAL, похоже, строковая переменная.

на основании чего сделали такой вывод, о том что phone_SEQ.NEXTVAL строковый?
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вызов хранимых процедур Oracle из ASP.NET / 25 сообщений из 26, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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