powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB и вызов сохраненного в Oracle SQL Script
21 сообщений из 21, страница 1 из 1
VB и вызов сохраненного в Oracle SQL Script
    #36636703
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста возможно ли в 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
VB и вызов сохраненного в Oracle SQL Script
    #36636810
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimсохраненный sql скрипт.
Это процедура/функция написанная на PL/SQL?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636833
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Приметы ты можешь найти в %ORACLE_HOME%\oo4o\VB\SAMPLES
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636848
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторЭто процедура/функция написанная на 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
VB и вызов сохраненного в Oracle SQL Script
    #36636856
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaMПриметы ты можешь найти в %ORACLE_HOME%\oo4o\VB\SAMPLES
У меня OracleXE и там к сожалению нет VB\SAMPLES.
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636877
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это неименованный блок он исполняется и от него ничего не остаётся. Ты хочешь выполнить данный код из под клиента?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636880
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в базе сохранены "скрипты" в таком виде которые необходимо выполнять с клиента.
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636896
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ты их из файла с расширением .sql достал? В базе такие объекты не хранятся
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636918
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да из файла и запихнул в базу в SQL Scripts.
Это наверное неправильно.
Можно ли передать этот неименованый блок с клиента VB(через ADO и т.п.) в Oracle для выполнения?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636933
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
timtimДа из файла и запихнул в базу в SQL Scripts.
Ты просто исполнил это файл. Он мог даже тебе ругнуться: No map c:\SK.MAP. Я не вижу в этом коде смысла... Его скорее всего нужно запускать один раз. Объясни для чего тебе запускать эти скрипты через VB6?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36636976
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне только и надо иполнять этот код
В 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
VB и вызов сохраненного в Oracle SQL Script
    #36637009
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может воспользоваться утилитой sqlplus <username>/<password>@XE < script.sql через команду VB6 shell?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36637020
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Возможен и такой вариант.
Но на самом деле хотелось бы формировать на лету(без использования файлов .sql) эти скрипты и вызывать их через Ado или может через oo4o(не знаком пока с этим).
Такое возможно?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36637037
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всё конечно возможно, просто это для вас самый простой вариант если вы пока
timtimOracle, просто вижу в первый раз и не знаю как и что там.
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36637110
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Примеры работы с Oracle от самого Oracle :)
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36637138
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо!
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36637735
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Т.е. как я понял запрос в формате LP\SQL возможен только через oo4o, или есть варианты?
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36645367
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
VB и вызов сохраненного в Oracle SQL Script
    #36645451
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Изменив анонимный блок
Код: 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
VB и вызов сохраненного в Oracle SQL Script
    #36646331
timtim
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SashaM, ты как самый главный по Oracle, относительно этого форума, можешь объяснить на пальцах оптимальный алгоритм вызова неименованого блока?
Спасибо.
...
Рейтинг: 0 / 0
VB и вызов сохраненного в Oracle SQL Script
    #36646541
SashaM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще всего все твои скрипты загнать в базу данных в поле с типом CLOB
И вызывать их с помощью dbms_sql
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / VB и вызов сохраненного в Oracle SQL Script
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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