2016-03-30 13 views
1

Birden çok satır/satır içeren tablo 'Company' var. Bunlardan biri 'Company_name' alanı için Microsoft ve 'City' alanı Redmond olarak doldurulur.SQL - PL/SQL Basit bir işlev yazma ve bir sonucu sorgulamak için çalıştırılıyor

Bu PL/SQL dosyasını derledim.

- X şirketinin bulunduğu şehri geri döndürecek bir işlev oluşturun.
- X arayan tarafından sağlanan parametre olacaktır.
- İşlevinizi istediğiniz şirkette test edin.

CREATE OR REPLACE FUNCTION company_location_city(x IN company.company_name%TYPE) 
return company.city%TYPE IS 
    company_location company.city%TYPE; 
BEGIN 
    select city into company_location 
    from company 
    where company_name = x; 

    return company_location; 
END; 

ve bu satırı kullanarak çalıştırın.

select company_location_city('Microsoft') from dual; 

Bu hatayı alıyorum ve bana ne anlatmaya çalıştığını anlamıyorum. Tabii ki seçimle karşılaştık.

Oracle lezzetini çalıştırıyorum.

Hata (12,1): PLS-00103: sembol Ayrıca

yardımcı olmalıdır hata göstermeden sorgu sonucu "SEÇ" karşılaşıldı.

ORA-06575: Paket veya işlev COMPANY_LOCATION_CITY geçersiz bir durumda olduğunu 06575. 00000 - "Paket veya işlev% s geçersiz bir durumda" * Neden: Bir SQL ifadesi, PL/SQL işlev başvuran bu geçersiz durumunda. Oracle işlevi derlemeye çalıştı, ancak hata saptadı. * İşlem: sözdizimi için SQL deyimini ve PL/SQL işlevini ya da başvurulan nesnenin yanlış atanmış veya eksik, ayrıcalıklarını kontrol edin. Line'da Hata: 16 Kolon: 8

+0

Siz pl \ sql hatası aldınız, ancak sql sorgusunu çalıştırdınız. Bu sorguyu nasıl çalıştırdınız? Yani bazı IDE veya sqlplus kullanabilir misin? –

+0

IDE kullanıyorum. Sql Geliştirici. – camdixon

+0

Oracle Sql Geliştirici? Yani sorgunuzu ** SQL Worksheet ** penceresinde çalıştırmalısınız. Bunu yaptın mı? –

cevap

1

PLS hata önek o pl \ sql motor hatası olduğunu söylüyor. Bu nedenle, sql kodunuz pl \ sql işlevi olan ddl kodu nedeniyle pl \ sql olarak kabul edildi. Sql ve pl/sql, 'u karıştırdınız, bunları sınırlayıcıyla bölmeniz veya kod türlerinden birini kaldırmanız gerekir.