(オラクル)Iクエリを持っ
SELECT originating_timestamp
FROM sys.x$dbgalertext
WHERE message_text LIKE '%Starting up%'
and to_char(ORIGINATING_TIMESTAMP,'DD-MON-YY') = to_char(systimestamp,'DD-MON-YY');
Linuxのスクリプトの出力は以下の通りである:
09-OCT-17 04.59.33.758 AM -05:00 09-OCT-17 05.03.22.645 AM -05:00
は、各出発上記二列あります日付によって。すべての行を区切り文字により分離さように、私はこれがわずか2行で、より多くの存在することができ
09-OCT-17 04.59.33.758 AM -05:00;09-OCT-17 05.03.22.645 AM -05:00
のような出力を持っていると思い
、私はそれをしたいと思います。
私はLISTAGGを使用して)
1のようないくつかのオプションを試してみました:
select listagg(originating_timestamp,', ') within group(order by originating_timestamp) csv
from sys.x$dbgalertext
WHERE message_text LIKE '%Starting up%'
and to_char(ORIGINATING_TIMESTAMP,'DD-MON-YY') = to_char(systimestamp,'DD-MON-YY');
しかし、これはエラーを与える:行1で ERROR:
:ORA-01489: result of string concatenation is too long
2)XMLAGGを使用して
SELECT RTRIM(XMLAGG(XMLELEMENT(E,originating_timestamp,';').EXTRACT('//text()') ORDER BY originating_timestamp).GetClobVal(),',') AS LIST
FROM sys.x$dbgalertext
WHERE message_text LIKE '%Starting up%'
and to_char(ORIGINATING_TIMESTAMP,'DD-MON-YY')= to_char(systimestamp,'DD-MON-YY');
しかし、出力は次のようになります。
2017-10-09T04:59:33.758-05:00;2017-10-09T05:03:22.645-05:00;
これも正しくありません。
Select username from dba_users
。 10人のユーザーがいるとします。10人のユーザー名を区切り記号で区切ります。あなたの問題を解決するために有用であることができる2つの無名ブロックの例以下は
必要がありますか? – Frank
yesカンマ、セミコロン... 2つの出力間の区切り文字。 –