Új hozzászólás Aktív témák
-
Lortech
addikt
válasz
kw3v865 #4380 üzenetére
Mert a formatos megoldásod dollar quotingot használ, ami a jobban olvasható, biztosabb, egyszóval a javasolt megoldás.
Ha visszamegyünk az eredeti statikus, működő insert statementedhez:
INSERT INTO tesztsema.table (azonosito, nev) SELECT 2332,'xyz';
Az volt a cél, hogy ezt a stringet dinamikusan előállítsd, és átadd az EXECUTE statementnek.
Azt pedig úgy tudod megtenni, hogy aposztrófokat is odateszed a példában az xyz köré.
A '||name csak annyit csinál, hogy a name értékét hozzáfűzi a stringhez, de aposztrófok ettől még nem lesznek körülötte, és text típusnál ez szükséges. Szóval, vagy te fűzöd oda (nem javasolt, csak a probléma megértéséért említettem az előző hozzászólásomban), vagy dollar quotingot vagy quote_literal() / quote_ident() fgv-t használsz.Másikhoz. Ilyen szerkezet nincs, hogy IF EXECUTE
Olyan tudsz csinálni, hogy
EXECUTE STATEMENT into VAR és a VAR értékét vizsgálod IF-fel. -
Lortech
addikt
válasz
kw3v865 #4377 üzenetére
'INSERT INTO '||$1||'.table (azonosito, nev) SELECT '||id||','||name;
>>
kiértékelés után: INSERT INTO abc.table (azonosito, nev) SELECT id_erteke, name_erteke;
Hiányzik tehát id és name változó értékei körül az aposztróf, különben azt hiszi, hogy nem egy literál, hanem egy oszlop, azért nem találja. (az id azért oké, mert number típus gondolom)
Aposztróf escape-eléséhez duplázni kell. -
Lortech
addikt
válasz
pittbaba #1699 üzenetére
A NULL speciális érték, pl. Oracle-ben nullt bármihez hasonlítod = / != -vel, egyaránt unknown eredményt ad. Null helyett érdemes lehet egy speciális, nullt szimbolizáló értéket adni a mezőnek, vagy ha az nem opció, akkor mindig IS NULL / IS NOT NULL-lal (is) vizsgálni.
-
Lortech
addikt
válasz
alratar #1692 üzenetére
Na és akkor mi lesz, ha már a tényleges, aktív játékosállomány is meghaladja ezt a tartományt, miután megcsináltad ezt a léptetgetést ?
Komolyra fordítva, az id-ket nem módosítgatjuk, főleg nem ilyen ürüggyel. Megfelelően nagy típust kell választani kulcsnak, amelybe belefér minden tervezett adat + ráhagyás.
-
Lortech
addikt
válasz
lakisoft #1550 üzenetére
Örökös vita a tárolt eljárás használata vagy nem használata.
Én egyik mellett sem kardoskodnék, mert ezer + 1 körülménytől függ, hogy adott fejlesztésben / ellenjavalt, érdemes / kell használni tárolt eljárásokat.
Csak egy a számtalan, neten fellelhető cikkből, threadből, ahol ez a téma: [link]
Szinte minden érvre lehet ellenérvet találni ebben a témakörben. Szerintem az a fontos, hogy jól ismerjük a lehetőséges megoldásokat, ezek előnyeit, hátrányait, így lehet jó döntéseket hozni a tervezés, implementáció során. -
Lortech
addikt
Ha 1 - több kapcsolat van a két tábla között, akkor a kapcsoláshoz nem kell több.
A child/detail táblában felveheted még foreign keynek a mezőt, tudsz constraintet is definiálni hozzá, amely megakadályozza, hogy a child táblában létrejöjjön rekord megfelelő parent/detail nélkül, illetve meghatározhatod, hogy mi történjen, ha a parent táblában módosul vagy törlődik az adott kulcsú rekord. Storage engine-től függ, hogy támogatja-e az FK-t, InnoDB támogatja csak. -
Lortech
addikt
A lekérdezés eredményének egyik mezője? Egyik, mint tetszőleges mezője vagy egyik, mint 1 adott mezője.
A lekérdezés eredményén (kurzor) végiggyalogolsz egy ciklussal, és a megfelelő mező(ke)t megvizsgálod instr függvénnyel.
Hatékonyabb lenne, ha eleve az sql tartalmazza a vizsgálatot a where-ben a like klózzal.
Nem tudom, hogy ezzel segítettem-e, mert 38 féleképpen lehet értelmezni a mondatodat, pontosítás kéne pont bemenet és elvárt végeredmény tekintetében. -
Lortech
addikt
to_char mit dob erre, ha kiíratod vele a sysdate-et:
to_char(sysdate,'DD-MON-YYYY')Vagy kérdezhetném azt is, hogy mi az nls_lang:
select DECODE(parameter, 'NLS_CHARACTERSET', 'CHARACTER SET',
'NLS_LANGUAGE', 'LANGUAGE',
'NLS_TERRITORY', 'TERRITORY') name,
value from v$nls_parameters
WHERE parameter IN ( 'NLS_CHARACTERSET', 'NLS_LANGUAGE', 'NLS_TERRITORY') -
Lortech
addikt
válasz
WonderCSabo #691 üzenetére
NO_DATA_FOUND exception keletkezik, ha a select into statement nem hoz eredményt, ezt a kivételt lekezelve megkapod az else ágat.
EXISTS utasítás nincs ora plsql-ben.
Where záradékban használhatod ha a megoldásodnál maradsz, én inkább alábbit ajánlom....
temp integer;
...
select count(*) into temp from ? where ? and rownum = 1;
if temp = 1 then
--?
else
--?
end if;
...szerk: na látom ide lyukadtál ki magadtól is.
-
Lortech
addikt
Olvasd vissza, nem arról volt szó, hogy a DB2 vagy MSSQL a rokona Oracle PL/SQL-nek, hanem amit te írtál, hogy a PostgreSQL (ez az RDBMS neve ugyanis) kistestvére az Oracle-nek, én erre reagáltam, és nem azt, amit most nekem tulajdonítasz.
Az idézet pont annyit mond, amit én is mondtam, hogy hasonló a két nyelv. (Oracle PL/SQL és PostgreSQL PL/pgSQL, viszont te azt írtad, idézem: "mindkettő "PLSQL", és ebből érvet is formáltál, hogyha egyik tudja valamit, akkor azt a másiknak is tudnia kéne, holott szintaktikai hasonlóságon, és az sql szabványokból következő hasonló elnevezéseken, funkciókon kívül nincs közük egymáshoz, nincs közös kódbázis, fejlesztő. Olyasmi a kapcsolatuk, mint a Javanak és a .NET-nek.
-
Lortech
addikt
A PostgreSQL nem kistestvére Oracle-nek (mint ahogy nem az a DB2 se, meg az MSSQL se); a PL/pgSQL hasonló technológia ugyan mint a Oracle PL/SQL, de közel sem ugyanaz; az Oracle meg sose tudta azt, amiről szó volt. Én tudom, mert én meg bevallom nap mint nap előtte ülök, mivel Oracle termékeket (tovább)fejlesztek, integrálok, javítok.
-
Lortech
addikt
Ezt fejtsd már ki, mert két 10+ év tapasztalattal rendelkező Oracle DBA-t kérdeztem meg házon belül, és nem jutott eszükbe más megoldás.
Viewra instead of triggert akkor raksz, ha update-elni akarod a viewt, de nem tudom, hogy jön ide. Továbbra is update, insert, delete triggerelhet instead of esetén is, select statementet mivel fogod triggerelni ?
-
Lortech
addikt
1, Ha "olvasott" egyetlen egy adott rekord, amely valamely kritérium alapján egyértelműen azonosítható (van kulcs),
...vagy...
2, Ha olvasott bármelyik rekord a táblában, amelyben tetszőlegesen sok sor van ?Felteszem 2) a válasz.
1) esetben audittal meg lehetne csinálni, hogy konkrétan a sorra selectkor lefusson egy eljárás, ami updateli a másik táblát.
Végülis tetszőleges(en sok) sorra is beállítható audit, de minden sorra külön kéne 1 audit (triggerrel létre lehetne hozni az auditot is). Működhet, csak nem erre való.Ha ilyesmi követelmény van, akkor azt programlogikából szokás megoldani, nem izomból.
-
Lortech
addikt
Mysql vs. Access azért nem egy Mysql vs. Oracle.
Ha egyszerű queryket írtál, akkor sok különbség nem lesz, sima felhasználói oldalról. Ha már függvényeket, különféle típusokat használsz, vagy adminisztrálsz, esetleg programozol benne, akkor már rengeteg különbség van.
Ha select * from tábla lekérdezéstől komolyabb dolgokat csinálsz, akkor könnyen előfordulhatnak különbségek, példaként kezdőknél a dátum kezelés szokott problémát jelenteni először.
OracleXE teljesen jó tanulókörnyezetnek, kattintgatós telepítővel létrehoz neked automatikusan egy saját szerver példányt, és van webes felülete is, amin queryket is gyakorolhatsz (alap konzol sqlplus mellett). -
Lortech
addikt
válasz
mérienn23 #525 üzenetére
csak kutya és cica:
select count(distinct nev) from tabla where
nev in (select distinct nev from tabla where nev in
(select distinct nev from tabla where allat = 'kutya') and allat = 'cica') and nev not in (select distinct nev from tabla where allat not in ('kutya','cica'))a többi esetet rádbízom.
-
Lortech
addikt
válasz
mérienn23 #521 üzenetére
1,
select count(*) elso_valasz from
(select nev, count(allat) kutyak_szama from tabla where allat = 'kutya' group by nev) kutyak join
(select nev, count(allat) allatok_szama from tabla group by nev) allatok on kutyak.nev = allatok.nev
where allatok_szama = kutyak_szama2,
select count(*) masodik_valasz from
(select nev, count(allat) kutyak_szama from tabla where allat = 'cica' group by nev) kutyak join
(select nev, count(allat) allatok_szama from tabla group by nev) allatok on kutyak.nev = allatok.nev
where allatok_szama = kutyak_szama3,
select count(*) harmadik_valasz from
(select nev, count(allat) kutyak_szama from tabla where allat = 'papagáj' group by nev) kutyak join
(select nev, count(allat) allatok_szama from tabla group by nev) allatok on kutyak.nev = allatok.nev
where allatok_szama = kutyak_szama4, select count(*) negyedik_valasz from (select distinct nev from tabla where nev in (select nev from tabla where allat = 'cica') and allat = 'kutya')
5, select count(*) otodik_valasz from (select distinct nev from tabla where nev in (select nev from tabla where allat = 'cica') and allat = 'papagáj')
6, select count(*) hatodik_valasz from (select distinct nev from tabla where nev in (select nev from tabla where allat = 'kutya') and allat = 'papagáj')
7, select count(*) from (select distinct nev from tabla where nev in (select nev from tabla where nev in (select nev from tabla where allat = 'cica') and allat = 'kutya') and allat = 'papagáj')
höhö, 3 sör után,
ja és sok sikert a tanárodnak. -
Lortech
addikt
válasz
sirius_01 #398 üzenetére
Erre nehéz lenne válaszolni, mert nem tudom neked mennyi a nagyon vagy a kicsit, illetve milyen erős gépen fog futni, és mekkora az az adatbázis. Ezres / százezres nagyságrendig nem vészes (ex-has mondom), milliósnál már érdemes lenne jobban megvizsgálni a kérdést. De leginkább teszteld le és nézd meg, hogy mennyi idő alatt futott le a query.
-
Lortech
addikt
válasz
sirius_01 #396 üzenetére
Pont azt adja vissza a lekérdezés, amit leírtál most, tehát:
10 --- 1
10 --- 2
10 --- 3
12 --- 1
12 --- 2
12 --- 4A lekérdezést pedig nyilván paraméterezned kell mindig az igényednek megfelelően, tehát ha 1,4 kell, akkor (1,4).
szerk: Illetve a (>=)2 helyett megadott halmaz elemszámát kell megadni. -
Lortech
addikt
válasz
sirius_01 #394 üzenetére
select * from masodik where azon in (select d.a from (select count(*) c, azon a from masodik where ik in (1,2) group by azon) d where d.c >= 2)
?
Viszont a 12 -höz három sor tartozik, nem kettő, vagy valami nem tiszta. Kéne lennie jobbnak, de most nem jut eszembe. Mindenesetre általánosan elmondhatom eddigi tapasztalataim alapján, hogyha ilyen csúnya lekérdezést kell írni, akkor általában a séma nem megfelelő. -
Lortech
addikt
De nyilván meg lehet ezt is csinálni, csak kérdés, hogy megéri-e (milyen gyakran kell mailt küldeni, milyen sűrűn változik a mail adatbázis). Szerintem a legegyszerűbb még mindig az, hogy php-val csinálod a kapcsolódásokat minden adatbázishoz külön (vagy csak select_db, ha azonos a szerver) és összefésülöd az adatokat egybe.
-
Lortech
addikt
Biztos nem az oracle a hülye, valami oka kell hogy legyen, csak nem jösz/jövünk rá.
Az az "sql commands" és hogy az "elfogadja" a parancsot, mit takar?
Alter session-re van jogod? Lehet, hogy lefut a parancs, szintaktikailag helyes volt, csak épp nem történt semmi, mert nincs jogosultságod például.select value from NLS_SESSION_PARAMETERS where parameter = 'NLS_DATE_FORMAT'
Ez a lekérdezés dobja, amit beállítottál? -
Lortech
addikt
Mennie kéne ránézésre, nem látom a problémát. Tesztelni nem tudom. Tüneti kezelésnek nem jó a to_date függvény neked (megadod a dátumot olyan formában ahogy van, aztán a dátum formátumsztringet hozzáigazítod )? Nem tudom mi a cél, csak zavar-e, vagy komoly problémát okoz valami miatt.
-
Lortech
addikt
Minden valamirevaló sql szerver tud alapból növekményes backupot. Nem kell kézzel szüttyögni.
szerk: példát kivettem, mert nem jó.
imibogyo:
Egyébként amit kértél, az a felhasználó nevem, meg a jelszóm ???? Mondom láma vagyok...Nem a te jelszavadat, hanem egy olyan account jelszavát, amivel be tudok lépni a szerveredbe, és ki tudom próbálni.
-
Lortech
addikt
válasz
imibogyo #301 üzenetére
Nem, akkor üres halmazt kapsz vissza. Szintaktikai hibát nem okozhat.
Biztos kell neked ez a select? Az első hozzászólásban csak a táblasémát írtad, mint feladat. A selectet csak szemléltetésképpen írtam.
Ha adsz valami publikus logint a szerveredhez, akkor esetleg be tudom rajta üzemelni.
-
Lortech
addikt
válasz
imibogyo #296 üzenetére
Ja még egy kérdés, ezt a JOIN dolgot csak lekérdezésnél lehet megcsinálni ?? nem tudom összekapcsolni őket alapból, mint pl. Accesben ???
Mi másnál akarod megcsinálni? Az sql és az access két külön fogalom.A k, sz, m a könyv, szerző és műfaj rövidítése. Amint látod, ott van, hogy konyv k, így k-val tudsz hivatkozni a könyvre, nem csak ezután, hanem előtte is, pl a select k.cim.
SELECT k__onyv.cim, i__ro.iro, m__ufaj.mufaj FROM k__onyv k JOIN i__ro i ON k__onyv.iro_id=iro_id JOIN m__ufaj m ON k__onyv.mufaj_id=mufaj_id;
Persze, hogy nem jó, mivel a "k__onyv.iro_id=iro_id" résznél nem adod meg, hogy az iro_id melyik táblához tartozik. Tehát k__onyv.iro_id=i__ro.iro_id, és a műfajnál is ez. -
Lortech
addikt
válasz
EEdem_Dtx #293 üzenetére
Nem tudok más megoldást sajna.
imibogyo:
Leegyszerűsített séma az alapkoncepció megértéséhez:
konyv (id, cim, szerzo_id, mufaj_id)
szerzo(id, nev)
mufaj(id, nev)konyv tábla egy sora:
1,Közöny,1,1
2,Bukás,1,1szerzo tábla egy sora:
1,Albert Camusmufaj tábla egy sora:
1, regenyHa a lekérdezésben összekapcsolod a táblákat úgy, hogy:
select k.cim, sz.nev, m.nev from konyv k
join szerzo sz on k.szerzo_id = sz.id
join mufaj m on k.mufaj_id = m.id
- akkor megkapod eredménynek, hogy:
Közöny, Albert Camus, regény
Bukás, Albert Camus, regényA címet és nevet nem érdemes szétbontani értelemszerűen, mivel ez egyedi. Kiadás évét sincs sok értelme külön kategóriára bontani szvsz.
De pl. a kiadót érdemes. -
Lortech
addikt
Új hozzászólás Aktív témák
- Nvidia GPU-k jövője - amit tudni vélünk
- Óvodások homokozója
- PlayStation 5
- BestBuy ruhás topik
- Milyen légkondit a lakásba?
- Milyen TV-t vegyek?
- Telekom mobilszolgáltatások
- Ez lenne a népkártya? Teszten a GeForce RTX 5060 Ti 16 GB
- Autós topik
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- ÁÁÁ NE NÉZD MEG! A szórakozás, és a multitasking csúcsa, Lenovo Yoga 9i //3 OLED Modell Ajánló//
- UF Lenovo Yoga 9i x360 Érintős Hajtogatós Laptop Tab 14" -60% i7-1360P 16/1TB Iris Xe 2,8K OLED 90Hz
- Xbox Series X 1TB - 2 kontroller + 3 játék szabadon választható
- RYZEN 7 5700X / 32GB RAM / 1TB SSD / RX 6700 XT 12GB / 750W Gold Full Modular - AMD GAMER PC
- Intel i3-9100 - 24GB RAM - Samsung 980 500GB - be quite! Pure Base 500 + 1000W Táp - MSi Z390-A PRO
- iKing.Hu - Apple Macbook Pro 13 Touchbar M2 -2022 - Használt, karcmentes
- AKCIÓ! Lenovo Thinkpad P15 Gen1 15 FHD notebook - i7 10750H 16GB RAM 512GB SSD Quadro T1000 W11
- Tablet felvásárlás!! Apple iPad, iPad Mini, iPad Air, iPad Pro
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- AZONNALI SZÁLLÍTÁS Windows 10 pro Retail aktiváló kulcs!
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest