powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вызов хранимых процедур Oracle из ASP.NET
26 сообщений из 26, показаны все 2 страниц
Вызов хранимых процедур Oracle из ASP.NET
    #38955768
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приветствую всех!

Я новичок в 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
Вызов хранимых процедур Oracle из ASP.NET
    #38955770
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat,
Так же как и в случае с SQL Server.
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955772
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955773
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

в интернете не нашел примера, везде запросы прописываются в коде, а как выполнить процедуры с параметрами не нашел, примерчик не скинете?!
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955774
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro, молодцом
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955775
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askatв интернете не нашел примера, везде запросы прописываются в коде, а как выполнить процедуры с параметрами не нашел, примерчик не скинете?!
вот , например
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955776
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Вызов хранимых процедур Oracle из ASP.NET
    #38955777
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronAskatв интернете не нашел примера, везде запросы прописываются в коде, а как выполнить процедуры с параметрами не нашел, примерчик не скинете?!
вот , например

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

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

По моему это для SQL Server, а это точно подойдет для Oracle?
Ну, само разумеется, только замените SqlDbType на соответствующий тип для Oracle.
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955793
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Вызов хранимых процедур Oracle из ASP.NET
    #38955800
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AskatРугается на "dc" в разделе using (SqlConnection con = new SqlConnection(dc.Con)) и на OracleDbType красным подчеркиваются:
что не так делаю?

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


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

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

при запуске:
Код: 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
Вызов хранимых процедур Oracle из ASP.NET
    #38955874
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat,
Что-то с параметром in_id in out integer явно не то...
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955876
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Axeleron,

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


раскоментить.
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955878
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
Вызов хранимых процедур Oracle из ASP.NET
    #38955888
Фотография Axeleron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Askat,
А phone_SEQ.NEXTVAL - небось не типа Integer в таблице?
...
Рейтинг: 0 / 0
Вызов хранимых процедур Oracle из ASP.NET
    #38955901
Askat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AxeleronAskat,
А phone_SEQ.NEXTVAL - небось не типа Integer в таблице?


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

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


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