Sadece bir ülke listesi ve onların ISO ülke kodlarını içeren bir tablo var. Ben gibi bir saklı yordam (aka fonksiyonu) sorgu sarma ediyorum:Bir PostgreSQL saklı yordamından bir recordset döndürmenin en kolay yolu nedir?
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof record AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
hata alıyorum: Ben ben üzerinden bir TİP ve daha sonra döngü tanımlayabilirsiniz biliyoruz
ERROR: a column definition list is required for functions returning "record"
bir imleç gibi kayıtlar, ama IIRC PostgreSQL'in yeni sürümleri için bunu yapmanın daha iyi bir yolu var (8.4.3 kullanıyorum) ama hatırlamaya çalışarak saçlarımı çekiyorum.
Düzenleme:
Bu çalışır:
CREATE OR REPLACE FUNCTION get_countries(
) RETURNS setof country_codes AS $$
SELECT country_code, country_name FROM country_codes
$$ LANGUAGE sql;
Not "İade SETOF [tablo adı]". Ama en esnek görünmüyor. Birden fazla tablonun birleşimine geri dönmeye kalkarsam dağılır.
olası bir kopyası [PL/pgSQL'de bir kaydın tuple yapısının bildirilmesi] (http://stackoverflow.com/questions/11907563/declaring-the-tuple-structure-of-a-record-in-pl- pgsql) –