2012-10-15 10 views

Odpowiedz

0

Spróbuj tego rozwiązania:

select (select SYSTIMESTAMP from dual) as d 
     /* 
      Here you can add more columns from table tab 
     */ 
from tab 
3

Jednym z powszechnych zastosowań (dla mnie) jest go używać, aby dołączyć do inline widoki na ...

SELECT 
    filter.Title, 
    book.* 
FROM 
(
    SELECT 'Red Riding Hood' AS title FROM dual 
    UNION ALL 
    SELECT 'Snow White'  AS title FROM dual 
) 
    AS filter 
INNER JOIN 
    book 
    ON book.title = filter.title 

[Jest to celowo banalizowany przykład.]

0

Nie powinno być potrzeby, DUAL słowo kluczowe to sposób, aby powiedzieć, że nie kwerendy tabeli, jeśli chcesz "dołączyć" DUAL z inną tabelą, po prostu kwerendę do drugiej tabela, w tym kolumny, które nie pochodzą z tabeli w klauzuli select.

EDIT: Ponieważ komentarze mówi, to stwierdzenie jest fałszywe, DUAL jest stół.

Nadal uważam, że nie ma sensu w tym (z pytania)

DUAL tabeli w sprzężenia

+0

To nie jest prawda, 'DUAL' jest tabelą, a nie ** słowem kluczowym **. Przeczytaj więcej tutaj: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:1562813956388 –

+0

@ A.B.Cade Dobrze, moje złe. Wciąż 'DUAL' jest zaprojektowany jako pomocnik i tak długo, jak dodajesz inną tabelę w zapytaniu, nie powinno być już potrzeby dla tego pomocnika. Nie ma sensu robić żadnych produktów kartezjańskich z jednym rzędem, ponieważ jest to element neutralny, a PO wyraźnie żąda "włączenia tabeli DUAL do łączenia". – Paciv

1

Zasadniczo można, ale nie ma takiej potrzeby.
można dodać kolumnę systimestamp pseudo aby cokolwiek kwerendy masz już:

SELECT t.col1, t.col2, systimestamp 
FROM your_table t 

dadzą takie same wyniki jak

SELECT t.col1, t.col2, d.st 
FROM your_table t, (select systimestamp st from dual) d 

nocie, że podwójny stół ma tylko jedną linię, więc produkt cartessian będzie nie dodawać wierszy do pierwotnego zapytania.

+0

Dziękuję wszystkim za odpowiedzi. Rozwiązanie A.B Cade'a zadziałało. Rzeczywista rzecz, którą próbuję zrobić, jest następująca: Kiedy trafimy na serwer przy użyciu Fiddlera lub Listonosza do testowania API, DB zwraca znaczniki timestamp zdarzenia. Ta wartość znacznika czasu musi być porównywana ze znacznikiem czasu zwrotu połączenia usługi sieciowej, tj. Znacznikiem czasu rzeczywistej odpowiedzi sieciowej http. Wartość endTime. Czy ta wartość powinna być zawarta w samym API przez DEV, czy jest jakiś sposób, abyśmy mogli zapytać o coś i je zdobyć? A jak przekonwertować ten znacznik czasu na CDT? Otworzę nowy wątek, jeśli nie jest to istotne pytanie. Dzięki. – rktimeless

+0

@rktimeless, nie jestem pewien, czy rozumiem twoje wymagania, ale wydaje się, że powinieneś otworzyć nowy wątek dla tego pytania. Podobnie jak w przypadku CDT, znacznik 'timestamp with timezone' (jak systimestamp) obsługuje już CDT, czytaj więcej tutaj http://docs.oracle.com/cd/B19306_01/server.102/b14225/ch4datetime.htm # i1006760 –

+0

Cześć ABCAde, po prostu potrzebuję uzyskać znacznik czasu, gdy zwraca się odpowiedź sieci http. Używam Fiddlera, aby trafić interfejs API na serwer, który z powodzeniem podaje odpowiedź http w następujący sposób: "header": { "product": "xxxxxxxxxx", "version": "xxxxxxxx" }, "status": { "ElapsedTime": 329, "httpReturnCode": 200, "statusCode": 0, "sukces": true, "startTime": 1350387905444, "statusDescription": "Udane" } --- to jest odpowiedź jsona. Ale to nie pokazuje czasu zakończenia, czasu, w którym odpowiedź została zwrócona. Jakieś pomysły? – rktimeless

Powiązane problemy