Wynik funkcji w sekcji FROM

0

Witajcie, może ktoś byłby mi w stanie pomóc z zapytaniem do tabel. Mianowicie mam taki problem: codziennie tworzy się nowa tabela o nazwie DK+ostatnia cyfra roku +miesiac+dzien+1, tak to wygląda na dzień 24.07.2019 - DK907241.
Czy podalbymi ktoś jak się odwoływać to takiej tabeli?

1

Google: dynamic SQL + nazwa twojego DBMS

0

Próbuję coś z tego zrozumieć ale chyba to za trudne dla mnie czy ktoś mógłby chociaż trochę pomóc.

1

Chodzi o to że przy pomocy jakiegoś kodu generujesz zapytanie w stringi a potem je wykonujesz przy pomocy dynamicznego wykonywania zapytań. Różnie to wygląda w zależności od silnika bazodanowe o Oracle, ms sql itp. Wówczas możesz wybrać z jakiej tabeli chcesz ciągnąć dana Z którego dnia. Jak byś napisał więcej coś o samy problemie do rozwiązania to było by łatwiej.

0

Nie mogę odwołać się do tabeli za pomocą FROM. Próbowałem poprzez łączenie liter z aktualną data i chciałem sprawdzić co mi zwraca z danej funkcji i przy select mi zwraca odpowiednią nazwę ale jak funkcje wrzucam do sekcji FROM to wyskakuje błąd. Nie kapuje tego dynamicznego sql. Tabela jest generowana jako litery stałe + wycinek daty +1 bazy ORACLE. Co jeszcze potrzebujesz wiedzieć aby mi pomóc?

0

Jeszcze tylko informacja, gdzie chcesz ten kod wykonać..

0

Mam taki program w Javie zrobiony w którym wpisuje zapytanie i zwraca mi wartość

1

Jak wrzucasz funkcje do FROM ? Jaką funkcję? Pokaz ten kod w Javie to będzie łatwiej. Co to za baza danych? Mam wrażenie, że coś strasznie mieszasz. Wiesz w ogóle jakie zapytanie ostatecznie wykonujesz ?
Co do dynamicznego wywoływania SQLa to tu masz kawałek na temat Oracle - https://renenyffenegger.ch/notes/development/databases/Oracle/PL-SQL/execute-immediate/index

0

SELECT XXX FROM 'DK.' || to_char(substr(replace(current_date, '/', ''), 2,5))||'1'

2

Masz takie opcje:

  1. Zbudować zapytanie w Javie, przed wysłaniem do bazy.
  2. użyć dynamicznego SQLa, typu execute immediate ... (jakiego silnika używasz?)
  3. opakować zapytanie w funkcję i zwracać "kursor", który sobie obrobisz po stronie Javy
0

Słuchajcie nie znam się na programowaniu. Dostałem od dostawcy naszego oprogramowania furtkę w której mogę wyciągać z baz (jeżeli tylko wiem gdzie się znajdują) dane które są mi potrzebne. Do tej pory było prosto SELECT FROM WHERE jakiś warunek i gitara. Wszystkie tabele były stałe. Pojawila się wartość które przechowywana jest w tabeli która się codziennie zmienia. Szczerze nie wiem jak skopiować kod żeby działało. Czy wystarczy że przed select wstawię execute immediate i będzie?

0

Proszę pomożcie

0

Jakie bazy używasz Oracle, SQL Server itp idt. Tak to jest szukanie, jak ślepy we mgle. jak nie wiesz to napisz czym się łączysz do tej bazy, żeby odpalać te selecty.

0

Oracle

0

Popatrz na ten link: http://www.dba-oracle.com/t_oracle_execute_immediate.htm
Zamiast insert robisz swojego selecta i powinno działać.

Co chcesz robić z tymi danymi potem?

0

Chciałbym żeby tylko zwróciło mi wartość.

0

To po co to generowanie nazwy tabeli? Możesz tam po prostu wpisać konkretną tabele za jakiś dzień i już. Chyba że to się ma jakoś automatycznie wykonywać na każdy dzień.

0

Dokładnie tak. Codziennie odwołuje się do tabeli z aktualnego dnia.

0

Czym wykonujesz to zapytanie? To jakiś skrypt czy jakiś inny program?

0

Jakiś program bodajże w javie

0

To wróć do linku, który ci podesłałem. musisz napisać kawałek skryptu Pl/SQLu który po pierwsze wygeneruje w stringu SQLa którego chcesz wykonać, a potem przez dynamiczne wykonanie zapytania je wykona. Niestety, więcej nie jestem ci w stanie pomóc. Druga opcja jest taka, że możesz poszukać w okolicy programisty Oracle, który ci to klepnie za parę złoty.

0

Ok dzieki

0

Jest jeszcze opcja spytania autora programu... :)

1 użytkowników online, w tym zalogowanych: 0, gości: 1