Ich erhalte diesen Fehlerkann keine Daten Art der Ansicht Spalte SQL ändern
cannot change data type of view column "percent" from integer to double precision
Ich habe eine Funktion findIntl()
genannt, die
create or replace function findIntl(integer) returns float as $$
select cast(count(*) as float)
from students s
join program_enrolments pe on (s.id = pe.student)
where s.stype = 'intl' and pe.semester = $1;
$$ language sql;
einen Schwimmer zurück und ich verwende den Rückgabewert in einer Ansicht genannt findPercent
create or replace view findPercent(semester, percent) as
select q6(s.id), findIntl(s.id)
from semesters s
where s.id = id and s.term ~ 'S' and s.year >= 2004;
Wenn ich ersetzen findIntl()
mit einer anderen Spalte Werte funktioniert es völlig in Ordnung, aber wenn findIntl()
es sagt, es ist cannot change data type of view column "percent" from integer to double precision
Wenn ich cast(findIntl(s.id) as numeric(4,2)
es sagt
ERROR: cannot change data type of view column "percent" from integer to numeric(4,2)
ich auf Stackoverflow, über etwas zu lesen haben mit dropping Tabellen zu tun, aber ich verstehe nicht ganz, warum ich Ich muss das tun, und ich bin mir nicht einmal sicher, ob es für diesen Fall gilt.
Auch, wenn ich entferne Semester von findPercent und nur Prozent dort halten und select findIntl(s.id)
nur dann sagt es
ERROR: cannot drop columns from view
Ich bin neu, so leid für meine Unwissenheit SQL, aber wenn ich eine Spalte mit ganzen Zahlen es funktioniert einwandfrei, aber wenn ich eine Funktion verwende, um Werte zurückzugeben, warum bricht das ab und wie kann ich das beheben?
Markieren Sie die verwendeten dbms. (Produktspezifische Frage.) – jarlh
SQL ist eine Sprache, die von ANSI/ISO spezifiziert wird. Es gibt verschiedene Produkte, die die SQL-Sprache mehr oder weniger gemäß der ANSI-Spezifikation implementieren. Es scheint jedoch, dass Sie hier ein produktspezifisches Problem haben. – jarlh
@jarlh Ah yep, ich benutze postgres glaube ich –