Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Преобразование дин. запроса  [new]
very_
Member

Откуда:
Сообщений: 50
Добрый день!
Есть динамический запрос
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 очень много, поэтому вручную перечислять их не удобно!
5 фев 19, 12:47    [21801864]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование дин. запроса  [new]
andrey_anonymous
Member

Откуда: Москва
Сообщений: 17676
very_
Добрый день!
Есть динамический запрос
  sSQL := 'declare   rTableAttr cTable%rowtype;
begin select * into rTableAttr from C_TABLE@'||cDBLINK||' where CODE = :p_CODE; 
:x := rTableAttr;
end;';

5 фев 19, 12:53    [21801874]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование дин. запроса  [new]
very_
Member

Откуда:
Сообщений: 50
andrey_anonymous,

тоже самое и получу "Выражение должно иметь тип SQL";
5 фев 19, 13:04    [21801880]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование дин. запроса  [new]
very_
Member

Откуда:
Сообщений: 50
мне нужна заполненная переменная rTableAttr вне дин запроса
5 фев 19, 13:05    [21801881]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование дин. запроса  [new]
very_
Member

Откуда:
Сообщений: 50
проблема решена, нашел статью на форуме
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;
5 фев 19, 13:28    [21801907]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование дин. запроса  [new]
-2-
Member

Откуда:
Сообщений: 14912
very_,

Через дблинк биндятся только коллекции простых типов index by pls_integer. Но в приведенном примере нет смысла биндить out коллекцию.
5 фев 19, 13:29    [21801908]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить