powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вызов процедуры Oracle и возврат рекордсета (ADO)
25 сообщений из 50, страница 2 из 2
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566303
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример действительно рабочий :-)
Но есть одно но. Допустим в процедуру передаются параметры - как мне тогда задать курсор в спецификации пакета если в нем есть переменные из процедуры (критерии отбора)?

Вобщем я понял идею буду пробовать пинать ораклоидов.
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566326
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
...
FUNCTION EMPL(param1 varchar2( 100 ),param2 date ....) return  c1 is
  tmp c1;
BEGIN
	 open tmp for 
	 	  select * from emp where field1=:param1;
	return tmp;
end EMPL;
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566337
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а что в спецификации написать когда задаем курсор?
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566348
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
cursor em is select * from emp;
type c1 is ref cursor return em%rowtype;
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566357
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не получится. Выборка сложная слишком а не просто из талбички - там 7 переменных с джойнами и группировками.
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566358
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почитайте уж что-нибудь по ораклу
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566394
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ага спасибо за ссылку и за помощь.
Я так понимаю что придется прописывать структуры для всех возвращаемых запросов руками - ужос!
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566419
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) ConnStr = "DSN=ORACLE9I; User ID=scott; Password=tiger"
2) ConnStr = "Provider=MSDAORA.1; Data Source=ORACLE9I; User ID=scott; Password=tiger"

вот такие варианты могут работать с SYS_REFCURSOR структурой. пробуйте
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566428
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буду пробовать все котрые Вы дали мне по ссылке на connectionstrings
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566437
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я пример кода выше уже приводил с провайдером MSDAORA.1
на нём и пробуйте.
вот ещё посмотрите примеры реализации (раздел для оракла и там есть ссылочка в конце на архив с примерами)
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566464
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MSDAORA.1

выдает
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566497
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и что там на этой строчке?
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566509
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как что? Сточка №1 - вызов процедуры а точнее просто ее имя без параметров.
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566515
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
текст пакета своего ораклового сюда выложите. эта ошибка внутри оракла.
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566559
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
CREATE OR REPLACE PACKAGE Test_reports IS
Function Cursor_Test(aTest VarChar2) Return Sys_refCursor;
End Test_Reports;

CREATE OR REPLACE PACKAGE BODY Test_reports IS

Function Cursor_Test(aTest VarChar2) Return Sys_refCursor
Is
fReturn   Sys_RefCursor;
Begin
 		 Open fReturn For select '01' Test from dual
                union select '02' Test from dual;
     Return fReturn;
Exception
         When Others Then
				      Raise;
End Cursor_Test;

End Test_Reports;

VBA

Код: plaintext
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.
Sub Test()
Dim strCon
Dim oCon
Dim oRs
Dim oCMD

strCon = "Provider=MSDAORA.1; Data Source=test; User ID=test; Password=test"
Set oCMD = CreateObject("ADODB.Command")
Set oCon = CreateObject("ADODB.Connection")
Set oRs = CreateObject("ADODB.Recordset")

oCon.Open strCon
oCMD.ActiveConnection = oCon
oCMD.CommandText = "Test_Reports.Cursor_Test"
oCMD.CommandType =  4 
oCMD.NamedParameters = True
oCMD.Parameters.Refresh

oCMD.Parameters("aTest").Value = "TEST"

Set oRs = oCMD.Execute
Do Until oRs.EOF
  Debug.Print oRs("Test")
  oRs.MoveNext
Loop
oRs.Close
Set oRs = Nothing
End Sub

VBA - это макрос Excel если это важно.
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566590
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sys_refCursor - зачем вы специально коверкаете системные названия?
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566596
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у вас этот пакет вообще в оракле работает?
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566601
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Аха :-) еще как.
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566641
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
CREATE OR REPLACE PACKAGE test_reports IS
Function сursor_test() return sys_refcursor;
End test_reports;

CREATE OR REPLACE PACKAGE BODY test_reports IS

Function cursor_test() return sys_refcursor
Is
fReturn   sys_refcursor;
Begin
     Open fReturn For 
        select '01' Test from dual;
     Return fReturn;
Exception
         When Others Then  Raise;
End cursor_test;

End Test_Reports;


Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Private Sub TestOra() 
Dim cmd As ADODB.Command
Dim rs as ADODB.Recordset

    Set cmd = New ADODB.Command
    cmd.ActiveConnection = "Provider=MSDAORA.1; Data Source=test; User ID=test; Password=test"
    cmd.CommandTimeout =  20 
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "test_reports.cursor_test"

    Set rs = cmd.Execute

    Debug.Print rs.Fields( 0 ).Value

    Set rs = Nothing
    Set cmd = Nothing
    
End Sub

вот так попробуйте
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566642
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
...
End test_reports;

не всё исправил
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566723
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не синтаксис непричем
http://www.sql.ru/forum/actualthread.aspx?tid=749216
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566752
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачем же людей вводили в заблуждение , что у вас VBA? а оказалось, что у вас ASP
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566756
Петров Андрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну тестирую то я в Excel-е...
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566761
Фотография Konst_One
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейНу тестирую то я в Excel-е...

и такой вариант не прошёл?
...
Рейтинг: 0 / 0
Вызов процедуры Oracle и возврат рекордсета (ADO)
    #36566852
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Петров АндрейНу тестирую то я в Excel-е...Не стоит этого делать.
Excel и ASP это очень разные вещи и VB в них только похожий. А все что выходит рамки примитивного синтаксиса уже должно писаться с учетом особенностей сред.
...
Рейтинг: 0 / 0
25 сообщений из 50, страница 2 из 2
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Вызов процедуры Oracle и возврат рекордсета (ADO)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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