Ερώτηση SQL

Συζητήσεις για γλώσσες προγραμματισμού και θέματα σχετικά με προγραμματισμό.
Post Reply
User avatar
nap
Kilobyte level
Kilobyte level
Posts: 239
Joined: Tue Nov 23, 2004 5:25 pm
Location: In da ghetto
Contact:

Ερώτηση SQL

Post by nap » Tue Jun 07, 2005 2:04 pm

Έχω τον ακόλουθο κώδικα σε T-SQL του SQL Server, που τοποθετεί τη μέγιστη τιμή του πεδίου field_name στη μεταβλητή my_val:

Code: Select all

declare @my_var int
set @my_var = (select max(field_name) from table_name)
Ξέρει κανέις πώς θα κάνω το αντίστοιχο στην PL/SQL της Oracle8i; Το προφανές:

Code: Select all

declare 
   my_var int;
begin
   my_var := (select max(field_name) from table_name)
end;
δεν δουλεύει... :-(
It is by will alone I set my mind in motion...
User avatar
v@lkyrja
bit level
bit level
Posts: 47
Joined: Thu Apr 22, 2004 2:31 pm
Location: Goodview

Re: Ερώτηση SQL

Post by v@lkyrja » Tue Jun 07, 2005 3:19 pm

nap wrote:Έχω τον ακόλουθο κώδικα σε T-SQL του SQL Server, που τοποθετεί τη μέγιστη τιμή του πεδίου field_name στη μεταβλητή my_val:

Code: Select all

declare @my_var int
set @my_var = (select max(field_name) from table_name)
Ξέρει κανέις πώς θα κάνω το αντίστοιχο στην PL/SQL της Oracle8i; Το προφανές:

Code: Select all

declare 
   my_var int;
begin
   my_var := (select max(field_name) from table_name)
end;
δεν δουλεύει... :-(
παρακάτω θα βρεις ένα παράδειγμα για ένα procedure που έχω σε oracle9i. νομίζω ότι δεν θα έχεις προβλημα με την 8i.
αν θες μπορώ να σου στείλω και reference της PL/SQL...

procedure LockedByUser ( I_NId In wf_notifications.notification_id%type
, O_IsLocked Out varchar2
, O_User_Name Out varchar2
)
Is
l_username varchar2(30);
Begin
If Check_Lock(I_NId) then
O_IsLocked := bool2varchar2(true);

Select user_lock
Into l_username
From notif_locks
Where notification_id = I_NId;

O_User_Name := l_username;
Else
O_IsLocked := bool2varchar2(false);
O_User_Name := '';
End if;
End LockedByUser;
" They say, if you play the Win2000 CD backwards, you can hear satanic words.
- Oh, that´s nothing. If you play it forward, it installs Windows 2000"
User avatar
nap
Kilobyte level
Kilobyte level
Posts: 239
Joined: Tue Nov 23, 2004 5:25 pm
Location: In da ghetto
Contact:

Post by nap » Tue Jun 07, 2005 3:25 pm

Ευχαριστώ. Το SELECT... INTO... δούλεψε μια χαρά στην 8i.
It is by will alone I set my mind in motion...
User avatar
v@lkyrja
bit level
bit level
Posts: 47
Joined: Thu Apr 22, 2004 2:31 pm
Location: Goodview

Post by v@lkyrja » Tue Jun 07, 2005 3:31 pm

ωραία :lol:
" They say, if you play the Win2000 CD backwards, you can hear satanic words.
- Oh, that´s nothing. If you play it forward, it installs Windows 2000"
User avatar
ailouros
Gbyte level
Gbyte level
Posts: 1041
Joined: Fri Apr 30, 2004 4:36 pm
Academic status: Alumnus/a
Contact:

Post by ailouros » Wed Oct 12, 2005 8:42 pm

Η ερώτηση μου είναι απλή και εύκολη(αλλά εμένα μου την έχει σπάσει).
Έστω δύο πίνακες Α(κλειδί,στοιχείο) και Β(κλειδί,Στοιχείο) και ο πίνακας Α_τομή_Β(κλειδίΑ,κλειδίΒ) και ένας τέταρτος πίνακας ΑΒδεδομένα ο οποίος περιέχει διάφορες στήλες μεταξύ των οποίων και δύο στήλες Α,Β όπου κάτω από αυτές έχει αντιστοίχως στοιχείο Α,στοιχείο Β.
Θέλω:Διαβάζοντας τα στοιχεία Α και Β ανα πλειάδα(βλ.Γιαννακουδάκης) στον πίνακα ΑΒδεδομένα να γεμίζω τον Α_τομή_Β με τα κλειδιά των Α κ Β.
Ελπίζω να ήμουν κατανοητός!
Συγκεκριμένα το περιβάλλον είναι access.Ο λόγος που τα χω μπλέξει είναι ότι δοκίμασα να τα κάνω με query .Ποιό είναι λοιπόν το query σε SQL?
Ευχαριστώ!
User avatar
Ethel
Venus Project Founder
Venus Project Founder
Posts: 2395
Joined: Fri Mar 19, 2004 10:41 am
Academic status: Alumnus/a
Gender:
Location: New York City, NY
Contact:

Post by Ethel » Wed Oct 12, 2005 10:33 pm

To όλο concept όπως το κατάλαβα πρέπει να είναι ως εξής:

insert into AVB keyA, keyB values (select A.keyA from A where A.elementA=AB.elementA, select B.keyB from B where B.elementB=AB.elementB )

ελπίζω να παίζει κάτι τέτοιας μορφής.
Good luck!
There's no place like 127.0.0.1
User avatar
ailouros
Gbyte level
Gbyte level
Posts: 1041
Joined: Fri Apr 30, 2004 4:36 pm
Academic status: Alumnus/a
Contact:

Post by ailouros » Thu Oct 13, 2005 11:04 am

Ευχαριστώ,Τελικά δούλεψε με το εξής:

INSERT INTO Οικισμός_τμ_Εναλλακτικός ( Id_οικ, Id_οικ_εναλ )
SELECT Οικισμός.Id_οικ, Οικισμός_εναλλακτικός.Id_οικ_εναλ
FROM (oikismoi_data INNER JOIN Οικισμός_εναλλακτικός ON oikismoi_data.[Άλλο όνομα] = Οικισμός_εναλλακτικός.Τοπωνύμιο) INNER JOIN Οικισμός ON oikismoi_data.Οικισμός = Οικισμός.Τοπωνύμιο;
Post Reply

Return to “Προγραμματισμός”