|
|
|
новичок
      
участник
Last Login: 12.03.2002 21:37
Сообщ.: 2,
Visits: 23
|
|
Здравствуйте !
У меня следующая проблема - пишу хранимую процедуру в MSSQL тело которой имеет следующий вид SELECT * FROM TABLE1, затем в Delphi используя компонент TStoredProc я получаю набор данных. как подобный запрос мне оформить в хранимой процедуре на Oracle ???? Если я использую в хранимой процедуре курсор, то не могу открыть процедуру в TStoredProc, пишет ошибку связанную с дискриптором курсора ! Как мне поступить ??? Хотелось бы использовать процедуру на стороне сервера, а не передавать запрос с помощью компонента TQuery ! Заранее Благодарен !
|
|
|
|
|
Forum Guru
      
участник
Last Login: 28.12.2002 11:35
Сообщ.: 69,
Visits: 760
|
|
Где-то http://www.relib.com/forums/topic.asp?id=732844 я уже это видел :)
|
|
|
|
|
Forum Member
      
участник
Last Login: 28.06.2002 21:38
Сообщ.: 47,
Visits: 518
|
|
| Я пытался бороться с этой проблемой когда работал с Builder 4. Теоретически как бы есть возможность передать из SP курсор или таблицу, но насколько я смог выяснить, практически это Delphi компонентами не поддерживается. Может быть сейчас ситуация изменилась к лучшему.
|
|
|
|
|
Forum Guru
      
участник
Last Login: 17.04.2003 15:55
Сообщ.: 69,
Visits: 760
|
|
Если вы работаете в Delphi/Builder, то используйте компоненты NcOCI (http://www.da-soft.com). Это совсем не реклама, это действительно хорошая компонента(ы) прямого доступа к Oracle, через OCI.DLL. Сами делаем проект, причем очень крупный на связке Oracle, Delphi+NcOCI. Успехов.
|
|
|
|
|
новичок
      
участник
Last Login: 03.12.2001 12:25
Сообщ.: 2,
Visits: 23
|
|
| Касательно прямого доступа у Oracle, могу посоветовать еще Direct Oracle Access (DOA). Весьма и весьма неплохие компоненты. Сколько работал с ними - одно удовольствие по сравнению с муками при работе с BDE...
|
|
|
|
|
новичок
      
участник
Last Login: 21.10.2002 16:37
Сообщ.: 3,
Visits: 34
|
|
Working with SQL Databases: triggers, rights, procs, etc.
http://www.borland.com/devsupport/sqllinks/pub-83.html
|
|
|
|
|
новичок
      
участник
Last Login: 17.01.2002 10:28
Сообщ.: 4,
Visits: 45
|
|
все очень просто работает в варианте с БДЕ нужно описать тип ref cursor в моем примере он описан в пакете
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 позволяют вытаскивать курсоры из процедур в пакетах
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
|
|
|
|