powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование дин. запроса
6 сообщений из 6, страница 1 из 1
Преобразование дин. запроса
    #39769603
very_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Есть динамический запрос
Код: plsql
1.
2.
3.
4.
5.
6.
7.
declare
  rTableAttr cTable%rowtype;
  sSQL varchar2(1024);
begin
  sSQL := 'begin select * into :rTableAttr from C_TABLE@'||cDBLINK||' where CODE = :p_CODE; end;';
  execute immediate sSQL using out rTableAttr, in 'CODE';
end; 


Каким образом его можно проще преобразовать чтобы избавиться от ошибки: "Выражение должно иметь тип SQL";

атрибутов C_TABLE очень много, поэтому вручную перечислять их не удобно!
...
Рейтинг: 0 / 0
Преобразование дин. запроса
    #39769610
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
very_Добрый день!
Есть динамический запрос
Код: plsql
1.
2.
3.
4.
  sSQL := 'declare   rTableAttr cTable%rowtype;
begin select * into rTableAttr from C_TABLE@'||cDBLINK||' where CODE = :p_CODE; 
:x := rTableAttr;
end;';
...
Рейтинг: 0 / 0
Преобразование дин. запроса
    #39769616
very_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andrey_anonymous,

тоже самое и получу "Выражение должно иметь тип SQL";
...
Рейтинг: 0 / 0
Преобразование дин. запроса
    #39769617
very_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
мне нужна заполненная переменная rTableAttr вне дин запроса
...
Рейтинг: 0 / 0
Преобразование дин. запроса
    #39769637
very_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема решена, нашел статью на форуме
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
DECLARE
   TYPE EmpCurTyp IS REF CURSOR;
   emp_cv   EmpCurTyp;
   emp_rec  emp%ROWTYPE;
   sql_stmt VARCHAR2(200);
   my_job   VARCHAR2(15) := 'CLERK';
BEGIN
   sql_stmt := 'SELECT * FROM emp WHERE job = :j';
   OPEN emp_cv FOR sql_stmt USING my_job;
   LOOP
      FETCH emp_cv INTO emp_rec;
      EXIT WHEN emp_cv%NOTFOUND;
      -- process record
   END LOOP;
   CLOSE emp_cv;
END;
...
Рейтинг: 0 / 0
Преобразование дин. запроса
    #39769638
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
very_,

Через дблинк биндятся только коллекции простых типов index by pls_integer. Но в приведенном примере нет смысла биндить out коллекцию.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Преобразование дин. запроса
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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