Создание хранимой процедуры для экспорта выбранных столбцов в строке в виде строки с разделителями - PullRequest
1 голос
/ 16 ноября 2011

У меня есть фрагмент кода, который позволяет мне взять одну строку и разобрать ее в столбцы. Однако я не знаю, с чего начать экспорт. Импорт достаточно прост с разделением и вставкой.

При экспорте мне нужно будет выбрать около 6 из 12 столбцов в таблице A, объединить все эти файлы в список с разделителями и затем вернуть строку.

Я полагаю, что лучший способ сделать это будет следующим:

  • Создать процедуру экспорта
  • Создать временную таблицу (например, "temp")
  • ОБЪЯВИТЬ значения, которые я хочу экспортировать
  • Вставить в "temp" строку с разделителями со всеми значениями (т. Е. New row = "col1, col2, col3, col4") ( это та часть, в которой я не уверен )
  • Как-нибудь вернуть это значение из сохраненного процесса?

Мне довольно удобно использовать SQL для выбора, обновления, объединения и других сложных задач ... но я буквально понятия не имею, когда речь идет о хранимых процессах, так как я всегда стараюсь избегать их и вместо этого добавлять функциональность в мой код!

Ответы [ 2 ]

1 голос
/ 16 ноября 2011

Код Oracle:

   declare

   function f
   return varchar2
   is
      l_text varchar2(1000);
   begin
      for c in (
      select rownum from <table>
      )
      loop
         l_text := l_text || c.rownum || ';';
      end loop;

      return l_text;

   end;

begin
   dbms_output.put_line(f); 
end;
/
0 голосов
/ 17 ноября 2011

Попробуйте это ...

<code>SELECT
        ISNULL(Col6 ,'')
+ '|' + ISNULL(Col7 ,'')
+ '|' + ISNULL(Col8 ,'') 
+ '|' + ISNULL(Col9 ,'') 
+ '|' + ISNULL(Col10,'') 
+ '|' + ISNULL(Col11,'') 
+ '|' + ISNULL(Col12,'')  AS MyList
FROM MyTable
Вы можете приводить или преобразовывать различные типы данных, используя SQL.( Cast & Convert )
Вот несколько примеров:

<code>SELECT
        ISNULL(CAST(Col6 as varchar) ,'')
+ '|' + ISNULL(CAST(Col7 as varchar(10)) ,'')
+ '|' + ISNULL(CONVERT(varchar(10),Col8) ,'') 
+ '|' + ISNULL(CONVERT(varchar(7),Col9 ),'') 
+ '|' + ISNULL(Col10,'') 
+ '|' + ISNULL(Col11,'') 
+ '|' + ISNULL(Col12,'')  AS MyList
FROM MyTable
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...