Forum Webscript.Ru

Общие => Базы данных => Тема начата: kan1 от 02 Мая 2006, 09:13:16

Название: динамический запрос
Отправлено: kan1 от 02 Мая 2006, 09:13:16
Кто знает помогите.
Пишу процедуру на plsql, составил текст sql запроса, как теперь получить данные из него, заранее при написании процедуры я не знаю ни какие таблицы будут использоваться ни их количество.
Название: динамический запрос
Отправлено: commander от 03 Мая 2006, 17:36:34
kan1

DECLARE
   iID   INT := 0;
BEGIN
SELECT id INTO iID FROM my_table WHERE id = 1;
RETURN iID;
Название: динамический запрос
Отправлено: kan1 от 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);