Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB и вызов сохраненного в Oracle SQL Script / 21 сообщений из 21, страница 1 из 1
19.05.2010, 14:37
    #36636703
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Подскажите пожалуйста возможно ли в VB вызвать из Oracle сохраненный sql скрипт.
Если да то как?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
Dim cnn As ADODB.Connection
Dim rs As ADODB.Recordset
Dim cm As ADODB.Command

    Set cnn = New ADODB.Connection
    
    With cnn
        .CursorLocation = adUseClient
        .Provider = "MSDAORA.1"
        .ConnectionString = "Data source=XE; user id=1;password=1"
        .Open
    End With
    
    Set cm = New ADODB.Command
    
    With cm
        .ActiveConnection = cnn
        .CommandType = adCmdStoredProc
        .CommandText = "Picture"
    End With

    Set rs = New ADODB.Recordset
    Set rs = cm.Execute

cm.Execute - ругается, что : Невозможно использование подключения для выполнения опереции.
Oracle, просто вижу в первый раз и не знаю как и что там.
...
Рейтинг: 0 / 0
19.05.2010, 14:57
    #36636810
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
timtimсохраненный sql скрипт.
Это процедура/функция написанная на PL/SQL?
...
Рейтинг: 0 / 0
19.05.2010, 15:01
    #36636833
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Приметы ты можешь найти в %ORACLE_HOME%\oo4o\VB\SAMPLES
...
Рейтинг: 0 / 0
19.05.2010, 15:08
    #36636848
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
авторЭто процедура/функция написанная на PL/SQL?
Выглядит так:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
set serveroutput on

DECLARE
    m1         NUMBER :=  0 ;
    hMap       BINARY_INTEGER :=  0 ;
    ret        BINARY_INTEGER :=  0 ;
    mapname    VARCHAR2( 256 ) := 'c:\SK.MAP ';
BEGIN
  ret := mapMessageEnable( 0 );
  hMap := mapOpenMap(mapname, m1);

  IF hMap =  0  THEN 
    DBMS_OUTPUT.PUT_LINE('No map ' || mapname);
    RETURN;
  END IF;
  ret  := plsPaintMapToBMP(hMap,  0 ,  0 ,  1500 ,  2700 , 'C:\ex.bmp', 32);
  mapCloseMap(hMap);
  hMap :=  0 ;

END;
/
...
Рейтинг: 0 / 0
19.05.2010, 15:09
    #36636856
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
SashaMПриметы ты можешь найти в %ORACLE_HOME%\oo4o\VB\SAMPLES
У меня OracleXE и там к сожалению нет VB\SAMPLES.
...
Рейтинг: 0 / 0
19.05.2010, 15:14
    #36636877
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Это неименованный блок он исполняется и от него ничего не остаётся. Ты хочешь выполнить данный код из под клиента?
...
Рейтинг: 0 / 0
19.05.2010, 15:16
    #36636880
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Да, в базе сохранены "скрипты" в таком виде которые необходимо выполнять с клиента.
...
Рейтинг: 0 / 0
19.05.2010, 15:19
    #36636896
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Ты их из файла с расширением .sql достал? В базе такие объекты не хранятся
...
Рейтинг: 0 / 0
19.05.2010, 15:25
    #36636918
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Да из файла и запихнул в базу в SQL Scripts.
Это наверное неправильно.
Можно ли передать этот неименованый блок с клиента VB(через ADO и т.п.) в Oracle для выполнения?
...
Рейтинг: 0 / 0
19.05.2010, 15:30
    #36636933
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
timtimДа из файла и запихнул в базу в SQL Scripts.
Ты просто исполнил это файл. Он мог даже тебе ругнуться: No map c:\SK.MAP. Я не вижу в этом коде смысла... Его скорее всего нужно запускать один раз. Объясни для чего тебе запускать эти скрипты через VB6?
...
Рейтинг: 0 / 0
19.05.2010, 15:39
    #36636976
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Мне только и надо иполнять этот код
В Oracle описаны ф-ии типа mapMessageEnable, mapOpenMap, plsPaintMapToBMP и т.д.
Т.е. функции берутся из сторонней dll.
-- Блок создания оболочек функций языка C ------
CREATE OR REPLACE LIBRARY LibMapAcces1 AS 'E:\OracleXE\app\oracle\product\10.2.0\server\BIN\Gisacweb.dll';

На данный неименованый блок Oracle не ругается.
Результатом исполнения этого кода является созданный ф-ей plsPaintMapToBMP файл bmp с карты c:\SK.MAP.
...
Рейтинг: 0 / 0
19.05.2010, 15:46
    #36637009
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Может воспользоваться утилитой sqlplus <username>/<password>@XE < script.sql через команду VB6 shell?
...
Рейтинг: 0 / 0
19.05.2010, 15:49
    #36637020
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Возможен и такой вариант.
Но на самом деле хотелось бы формировать на лету(без использования файлов .sql) эти скрипты и вызывать их через Ado или может через oo4o(не знаком пока с этим).
Такое возможно?
...
Рейтинг: 0 / 0
19.05.2010, 15:53
    #36637037
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Всё конечно возможно, просто это для вас самый простой вариант если вы пока
timtimOracle, просто вижу в первый раз и не знаю как и что там.
...
Рейтинг: 0 / 0
19.05.2010, 16:10
    #36637110
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Примеры работы с Oracle от самого Oracle :)
...
Рейтинг: 0 / 0
19.05.2010, 16:16
    #36637138
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Спасибо!
...
Рейтинг: 0 / 0
19.05.2010, 20:24
    #36637735
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Т.е. как я понял запрос в формате LP\SQL возможен только через oo4o, или есть варианты?
...
Рейтинг: 0 / 0
24.05.2010, 14:59
    #36645367
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
Dim Oracon As ADODB.Connection
Dim recset As New ADODB.Recordset
Dim cmd As New ADODB.Command

'On Error GoTo err_test


Set Oracon = CreateObject("ADODB.Connection")
Oracon.ConnectionString = "Provider=MSDAORA.1;" & _
                          "Data Source=XE;" & _
                          "User ID=tim;" & _
                          "Password=1;" & _
                          "PLSQLRSet=1;"
Oracon.Open
Set cmd = New ADODB.Command
Set cmd.ActiveConnection = Oracon

cmd.CommandText = Text1.Text
Set recset = cmd.Execute

В Text1:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
DECLARE
    m1         NUMBER :=  0 ;
    hMap       BINARY_INTEGER :=  0 ;
    ret        BINARY_INTEGER :=  0 ;
    mapname    VARCHAR2( 256 ) := 'c:\SK.MAP ';
BEGIN
  ret := mapMessageEnable( 0 );
  hMap := mapOpenMap(mapname, m1);
  IF hMap =  0  THEN 
    DBMS_OUTPUT.PUT_LINE('No map ' || mapname);
    RETURN;
  END IF;
  ret  := plsPaintMapToBMP(hMap,  0 ,  0 ,  1500 ,  2700 , 'C:\Temp\ex.bmp', 32);
  mapCloseMap(hMap);
  hMap :=  0 ;
END;


В итоге ошибка
Код: plaintext
1.
2.
3.
4.
Run-time error '-2147467259 (80004005)':

ORA- 28576 : lost RPC connection to external procedure agent
ORA- 06512 : at "TIM.PLSPAINTMAPTOBMP", line  1 
ORA- 06512 : at line  13 

Может подскажет кто, как же всётаки передать анонимный блок с клиента VB в Oracle.
Спасибо.
...
Рейтинг: 0 / 0
24.05.2010, 15:27
    #36645451
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Изменив анонимный блок
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
DECLARE
    m1         NUMBER :=  0 ;
    hMap       BINARY_INTEGER :=  0 ;
    ret        BINARY_INTEGER :=  0 ;
    top        BINARY_INTEGER :=  0 ;
    left        BINARY_INTEGER :=  0 ;
    buttom        BINARY_INTEGER :=  500 ;
    right        BINARY_INTEGER :=  500 ;
    resol        BINARY_INTEGER :=  32 ;
    mapname    VARCHAR2( 256 ) := 'c:\SK.MAP';
    bmpname    VARCHAR2( 256 ) := 'C:\Temp\ex.bmp';
BEGIN
  ret := mapMessageEnable( 0 );
  hMap := mapOpenMap(mapname, m1);
  IF hMap =  0  THEN 
    DBMS_OUTPUT.PUT_LINE('No map ' || mapname);
    RETURN;
  END IF;
DBMS_OUTPUT.PUT_LINE(mapname);  
ret  := plsPaintMapToBMP(hMap, top, left, right, buttom, bmpname, resol);
  mapCloseMap(hMap);
  hMap :=  0 ;
END;
Все заработало. Т.е. Объявил все переменные ипользуемые в ф-иях.
Почему интересно этот скрипт работал без ошибок в SqlPlus, а при вызове из VB понадобилось объявить все переменные?
...
Рейтинг: 0 / 0
24.05.2010, 22:54
    #36646331
timtim
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
SashaM, ты как самый главный по Oracle, относительно этого форума, можешь объяснить на пальцах оптимальный алгоритм вызова неименованого блока?
Спасибо.
...
Рейтинг: 0 / 0
25.05.2010, 04:03
    #36646541
SashaM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
VB и вызов сохраненного в Oracle SQL Script
Проще всего все твои скрипты загнать в базу данных в поле с типом CLOB
И вызывать их с помощью dbms_sql
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB и вызов сохраненного в Oracle SQL Script / 21 сообщений из 21, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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