Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

MS SQL - ne rade funkcije

[es] :: MS SQL :: MS SQL - ne rade funkcije

[ Pregleda: 2133 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

beginner

Član broj: 27533
Poruke: 3
*.fastres.net



Profil

icon MS SQL - ne rade funkcije30.05.2004. u 00:39 - pre 241 meseci
Pocetnik sam kada su u pitanju baze podataka, pa sam pomislio da bi bilo razumno da pocnem prvo sa SQL-om i prostijim upitima. Pretpostavljam da je problem koji mene muci trivijalan i da ste mozda vec odgovarali na slicna pitanja. Pokusao sam da nesto pronadjem ovde na sajtu, ali nisam uspeo, pa se nadam da mi necete zameriti ukoliko je pitanje vec bilo postavljeno.

Ovako...
Kreirao sam jednu (veoma prostu tabelu) u Access-u koja izgleda ovako i ima naziv NUMBERS:

ID A B
1 3.1415 4
2 -45 0.707
3 5 9
4 -57.667 42
5 15 55
6 -7.2 5.3
7 2 5

U Visual Studio-u sam kreirao Database Project i konektovao se na bazu (Accessov fajl koji
sadrzi pomenutu tabelu). Upiti koje sam postavljao (poceo sam po SAMS-ovoj knjizi SQL za 21 Dan)
su uglavnom radili, sve dok nisam poceo da koristim neke funkcije (f-je za datum, matematicke f-je)...

Tako, npr. kada zadam sledeci upit:

SELECT A, CEIL(A)
FROM NUMBERS

dobijem message box sa porukom:
Undefined function 'CEIL' in expression

Takodje za, npr., upit:
SELECT A, B, A MOD B
FROM NUMBERS
dobijam kao rezultat:
A B Expr1002
3.1415 4 3
-45 0.707 0
5 9 5
-57.667 42 -16
15 55 15
-7.2 5.3 -2
2 5 2

sto nije bas logicno (kao rezultat primera u knjizi dobijene su prave vrednosti, a ne zaokruzene
na citav broj). Takodje za neke druge upite dobijam celobrojne promenljive u rezultatu, a ne bi trebalo da budu.
Primeri u knjizi radjeni su za ORACLE, implementacije mogu da se razlikuju, za funkcije koje
pokusavam da koristim (a opisane su u knjizi) prethodno nadjem adekvatne za Microsoft-ovu implementaciju.

Ne znam sta radim pogresno, slicne poruke (da je funkcija nedefinisana) ili pogresan (celobrojni) rezultat
dobijam cak i kada iz MSDN-a sa copy/paste pokusavam da postavim neki upit.

Nadam se da ce neko imati dovoljno strpljenja da mi kaze u cemu je problem.
Hvala unapred.

P.S.
Znam da tabele ruzno izgledaju, ali ne radi mi tab kada pisem poruku. Posto su jednostavne, pretpostavljam da nece biti problem da vidite sta je u kojoj koloni.
 
Odgovor na temu

stanks
RH

Član broj: 12628
Poruke: 34
*.net.htnet.hr



Profil

icon Re: MS SQL - ne rade funkcije30.05.2004. u 10:25 - pre 241 meseci
Kojeg su tipa podaci u stupcu A i B? Mozda si stavio krivi tip podataka (ne pada mi nista drugo na pamet :( )

stanks
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: MS SQL - ne rade funkcije31.05.2004. u 14:05 - pre 241 meseci
Ako si povezao Access bazu, onda mozes da koristis samo SQL upite koji rade u Access varijanti SQL-a. Access SQL i Transact SQL koji ide uz MS SQL server nisu identicni. I ejdan i drugi imaju funkcije koje onaj drugi nema, a imaju i funkcije koje se isto ili slicno ziovu ali rade razlicito.
Na primer:
1) Acces uopste nema funkciju CEIL (CEILING) (= najmanji integer veci od zadatog broja ?)
2) Funkcija MOD ne postoji u MS SQL 2000.

Na primer
Code:

SELECT CEILING(3.14) 

radi ispravno u MS SQL i vraca tacnu vrednost 4. U Accessu CEILING ne postoji.
Code:

SELECT 5 MOD 3

radi OK u Accesu i vraca 2 kao sto i treba. U mS SQL 2000 uopste ne radi.

Ako hoces da naucis kako radi SQL nemoj odmah da upotrebljavas matematicke i inzenjerske funkcije, mogu da te zbune. Pisi lepo izraze tipa
Code:

SELECT AuName FROM Authors WHERE AuName LIKE 'B*' 

Napisano radi u Accessu, a za MS SQL ti treba nesto kao
Code:

SELECT AuName FROM Authors WHERE AuName LIKE 'B%' 


Pogledaj u nekoj knjizi sinaksu za SQL dijalekt za konkretan program. Ako ucis od primera do primera, samo ces da se zbunis.

I nije valjda da verujes da se za 21 dan moze nauciti bilo koji programski jezik?

:-)

 
Odgovor na temu

beginner

Član broj: 27533
Poruke: 3
*.lifetimeproducts.com



Profil

icon Re: MS SQL - ne rade funkcije02.06.2004. u 00:05 - pre 241 meseci
Zidaru,
hvala ti na odgovoru, mada nije sasvim resio moje probleme; napravio sam i SQL Bazu, konektovao se preko Query Analizer-a, i opet onaj CEIL ne prolazi...

Inacce, ne znam otkud ti ideja da ja mislim kako se mozze neki programski jezik nauciti za 21 dan (makar i SQL smatrao programskim jezikom ;) )? Ako je zbog knjige koju sam pomenuo, trebalo bi prvo da je procitas, pa da je kritikujes. Naslov je samo marketinski potez, knjiga ima 21 poglavlje koje tesko da mozes ljudski i da procitas za 21 dan. A i mnogi je preporucuju.

Hvala ti u svakom slucaju, pretpostavljam da si u pravu i da ove funkcije zavise od implementacije, pa da zbog toga ne prolaze.

P.S.
Mada, ja sam mislio da se upiti bazi prosledjuju preko nekih drajvera (npr. ODBC), pa da nije bitno da li je iza Access-ov file ili SQL 2000. Izgleda da ipak nije tako.
 
Odgovor na temu

Zidar
Canada

Član broj: 15387
Poruke: 3085
*.eqao.com



+79 Profil

icon Re: MS SQL - ne rade funkcije02.06.2004. u 14:13 - pre 241 meseci
Izvinjavam se za komentar o knjizi :-) Acces dialekt SQL nije jezik, ali ono sto imas u MS SQL bogami jeste. ima funkcije, procedure uskoro ce imati i report generator (pozajmljen od Accessa i ubacen u sledecu verziju MS SQL, Yucon, jesen 2004). Nemas forme za unos podataka, ali zato imas Accces, VB, web itd.

Cak i ako linkujes tabele iz MS SQL u Acces i u napravis Access query, taj query mora da sledi Access SQL sintaksu. Za linkovanu tabelu Access misli da je Access tabela. Sta tebi treba jeste Accessov PASS TROUGH query. Pass-trough query se pise u SQL dijalektu koji podrzava externa baza - u tvom slucaju MS SQL. Tabele koje se koriste u pass-through query ne moraju ni da budu likovane. Napises SQL statement koji se moze izvrsiti na MS SQL, sa pass through ga posaljes SQL serevru. Onda MS SQL izvrsi kveri (na Access) i vrati ti rezulat. Vidi u Access helpu o pass through kverijima. Ako ti je cilj samo da naucis SQL naredbe, oda onu sa CEILINIG funkcijom izvrsi u MS SQL - upotrebi SQL Query Analyzer tool i bice sve OK.

Srecan rad!

:-)

 
Odgovor na temu

tweeester
Ivan Arandjelovic
bg yu

Član broj: 724
Poruke: 882
*.kc.vicert.com

Sajt: www.javasvet.net


Profil

icon Re: MS SQL - ne rade funkcije02.06.2004. u 14:53 - pre 241 meseci
Cini mi se da jos uvek pokusavas da upotrebis f-ju CEIL koja ne postoji, vec treba upotrebiti CEILING ??

p.s. Upravo sam proverio na MS SQL 2000
<< tko leti vrijedi, tko ne leti ne vrijedi >>
 
Odgovor na temu

goranvuc
Goran Vucicevic
Novi Sad

Član broj: 4934
Poruke: 1846
*.dialup.neobee.net.



+41 Profil

icon Re: MS SQL - ne rade funkcije03.06.2004. u 23:38 - pre 241 meseci
Sto se tice MOD funkcije, ona vraca Integer vrednost, a njeni parametri su takodje Integer, sto znaci da ako ti pokusas: 22.66 MOD 20.33 rezultat ce biti 23 MOD 20 tj. 3 zato sto se parametri konvertuju u cele brojeve.
Ako probas 33333333333 MOD 222222222222 dobices gresku jer su parametri van opsega tipa Integer.
Dakle, nemoj da si malodusan, vec ako radis sa nekom funkcijom vidi kog su tipa njeni parametri i koji je njen ReturnType, pa polako.
 
Odgovor na temu

[es] :: MS SQL :: MS SQL - ne rade funkcije

[ Pregleda: 2133 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.