Форум программистов, компьютерный форум, киберфорум
Oracle
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/22: Рейтинг темы: голосов - 22, средняя оценка - 4.59
alexiicom
1

Oracle и хранимые процедуры !

22.01.2008, 22:59. Показов 4164. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте !

У меня следующая проблема -
пишу хранимую процедуру в MSSQL тело которой имеет
следующий вид SELECT * FROM TABLE1, затем в Delphi
используя компонент TStoredProc я получаю набор данных.

как подобный запрос мне оформить в хранимой процедуре
на Oracle ???? Если я использую в хранимой процедуре
курсор, то не могу открыть процедуру в TStoredProc,
пишет ошибку связанную с дискриптором курсора !

Как мне поступить ??? Хотелось бы использовать процедуру
на стороне сервера, а не передавать запрос с помощью компонента
TQuery !

Заранее Благодарен !
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.01.2008, 22:59
Ответы с готовыми решениями:

Oracle-9 хранимые процедуры, триггеры и ODBC + обратная связь
Есть оракловый сервак, есть приложение на CV++ юзающее через ODBC эту базу. Надо реаализовать...

Хранимые процедуры и функции
Ребята, дайте пожалуйста 1 пример, как описывать хранимую процедуру, и 1 пример, как описывать...

Хранимые процедуры: как проверить правильность выполнения в sqldeveloper?
Нашел код, как проверить правильность его выполнения в sqldeveloper? Какую команду добавить? начал...

Хранимые процедуры - вывести список книг, которые брал читатель
По введенной фамилии хочу что бы вывелись книги которые он брал. Написал следующий запрос и...

6
0 / 0 / 1
Регистрация: 23.10.2007
Сообщений: 68
23.01.2008, 10:34 2
Где-то
http://www.relib.com/forums/topic.asp?id=732844
я уже это видел
0
0 / 0 / 0
Регистрация: 15.03.2007
Сообщений: 40
26.01.2008, 10:05 3
Я пытался бороться с этой проблемой когда работал с Builder 4. Теоретически как бы есть возможность передать из SP курсор или таблицу, но насколько я смог выяснить, практически это Delphi компонентами не поддерживается. Может быть сейчас ситуация изменилась к лучшему.
0
VVP
27.01.2008, 13:16 4
Если вы работаете в Delphi/Builder, то используйте компоненты NcOCI (http://www.da-soft.com). Это совсем не реклама, это действительно хорошая компонента(ы) прямого доступа к Oracle, через OCI.DLL. Сами делаем проект, причем очень крупный на связке Oracle, Delphi+NcOCI.
Успехов.
0 / 0 / 0
Регистрация: 21.03.2015
Сообщений: 2
10.02.2008, 12:05 5
Касательно прямого доступа у Oracle, могу посоветовать еще Direct Oracle Access (DOA). Весьма и весьма неплохие компоненты. Сколько работал с ними - одно удовольствие по сравнению с муками при работе с BDE...
0
0 / 0 / 0
Регистрация: 20.02.2008
Сообщений: 3
20.02.2008, 11:32 6
Working with SQL Databases: triggers, rights, procs, etc.

http://www.borland.com/devsupport/sqllinks/pub-83.html
0
0 / 0 / 0
Регистрация: 20.03.2008
Сообщений: 4
24.03.2008, 09:54 7
все очень просто работает в варианте с БДЕ
нужно описать тип ref cursor
в моем примере он описан в пакете
Oracle 11 SQL
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
26
27
28
29
30
31
32
33
34
35
36
37
38
CREATE OR REPLACE PACKAGE Debug_PKG IS
  -- Public type declarations
  TYPE rLine IS RECORD (line VARCHAR2(255));
  TYPE tLines_Output IS TABLE OF rLine INDEX BY BINARY_INTEGER;
  TYPE cLines_Output IS REF CURSOR RETURN rLine;
  
  -- Public constant declarations
 
  -- Public variable declarations
  Lines1 DBMS_OUTPUT.chararr;
 
  -- Public function and procedure declarations
  FUNCTION GetLine(i INTEGER) RETURN VARCHAR2;
 
  PROCEDURE Get_OutPutLines(
    Lines IN OUT cLINES_OUTPUT, 
    NumLines OUT INTEGER);
  PRAGMA restrict_references (GetLine, WNPS,WNDS);
END Debug_PKG;
 
CREATE OR REPLACE PACKAGE BODY Debug_PKG IS
  FUNCTION GetLine(i INTEGER) RETURN VARCHAR2 IS
  BEGIN
    RETURN(Lines1(i));
  END;
 
  PROCEDURE Get_OutPutLines(
    Lines IN OUT cLINES_OUTPUT, 
    NumLines OUT INTEGER) 
    IS
    i INTEGER;
  BEGIN
    NUMLINES := GetParamByName('DEBUG_OUTPUT',p_IdDep,p_IdUs);
    DBMS_OUTPUT.GET_LINES(Lines1,NUMLINES);
    OPEN Lines FOR SELECT SUBSTR(GetLine(ROWNUM),1,255) 
        FROM orders WHERE ROWNUM <= Numlines;
  END;
END Debug_PKG;
процедура создана для того чтобы работало под БДЕ, а такие библиотеки как DOA позволяют вытаскивать курсоры из процедур в пакетах
Oracle 11 SQL
1
2
3
4
5
6
7
CREATE OR REPLACE PROCEDURE Get_OutPutLines(
  Lines OUT Debug_PKG.cLINES_OUTPUT, 
  NumLines OUT INTEGER) 
  IS
BEGIN
  Debug_PKG.GET_OUTPUTLINES(Lines,NumLines);
END;
потом нужно бросить на форму TStoredProc настроить ее на проседуру
так как TStoredProc является наследником TDataSet, то его можно использовать, например, как набор данных для грида.
и конечно надо его отрывать TStoredProc.Open

Ну а в варианте ипользования DOA там для этих целей нужно ипользовать
TOracleQuery
0
24.03.2008, 09:54
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2008, 09:54
Помогаю со студенческими работами здесь

Хранимые процедуры - определить, сколько раз будет выполняться код
Здравствуйте, у меня есть вопрос по хранимым процедурам, а конкретнее про оператора цикла LOOP из...

Процедуры Oracle SQL
Не получается создать процедуру, пишет ошибку: Error(3,5): PLS-00428: an INTO clause is expected...

Создание процедуры в oracle
Никак не могу написать процедуру для oracle, которая будет искать ФИО в таблице Клиент и если его...

Как на Oracle создаются процедуры?
Здравствуйте, прошу помощи специалистов. Никак не могу понять как на Oracle создаются процедуры.....

Вызов хранимой процедуры Oracle PL/SQL
Здравствуйте! Мне интересно вызова этой хранимой процедуры. На пример Создал таблица ...

Получить текст функции/процедуры из пакета - Oracle
Добрый день. Появилась задача найти в указанном пакете текст хранимой процедуры или функции. ...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru