Автор Тема: динамический запрос  (Прочитано 2955 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн kan1

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kan1.nm.ru
динамический запрос
« : 02 Мая 2006, 09:13:16 »
Кто знает помогите.
Пишу процедуру на plsql, составил текст sql запроса, как теперь получить данные из него, заранее при написании процедуры я не знаю ни какие таблицы будут использоваться ни их количество.

Оффлайн commander

  • Developer
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1298
  • +0/-0
  • 2
    • Просмотр профиля
    • http://www.webtips.ru
динамический запрос
« Ответ #1 : 03 Мая 2006, 17:36:34 »
kan1

DECLARE
   iID   INT := 0;
BEGIN
SELECT id INTO iID FROM my_table WHERE id = 1;
RETURN iID;
And no religion too...

Оффлайн kan1

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 66
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.kan1.nm.ru
динамический запрос
« Ответ #2 : 05 Мая 2006, 07:35:35 »
Привет commander,
Такой способ не подойдёт так как для него необходимо явно указать перечень полей и таблиц, а они будут известны только после обработки входного текста.

Впрочем я нашёл как сделать:
    cr := owa_util.bind_variables(строка запроса);
    dbms_sql.describe_columns(cr, ncol, dt);
    for i in 1 .. ncol loop
      dbms_sql.define_column(cr, i, 1,dt(i).col_max_len);
    end loop;
    kolrows := dbms_sql.execute(cr);
    loop
      if (dbms_sql.fetch_rows(cr) > 0) then
        for i in 1..ncol
        loop
           dbms_sql.column_value(cr, i, str1);
           ла-ла-ла
        end loop;  
      else
        EXIT;
      end if;  
    end loop;
    dbms_sql.close_cursor(cr);

 

Sitemap 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