2016-04-08 4 views
0
create or replace function sub_function() 
returns text as $$ 
declare 
variable varchar(40); 
begin 
insert into tbl_admin (NAME,EMAIL,PASSWORD,LEVEL,AUTHENTICATION_KEY) values  ('karunya','[email protected]','password12',1,''); 
variable=(select NAME from tbl_admin); 
return variable; 
end; 
$$ language plpgsql; 


create or replace function base_function() 
returns text as $$ 
declare 
variable1 text; 
begin 
create table if not exists tbl_admin(ADMIN_ID serial primary key, NAME varchar(40),EMAIL text,PASSWORD text, LEVEL text,AUTHENTICATION_KEY text); 
variable1=(select sub_function()); 
return null; 
end; 
$$ language plpgsql; 

Die Unterfunktion fügt korrekt ein, aber es gibt den Namen nicht zurück. Bitte gib mir eine Lösung.Wert von einer Funktion in einer anderen Funktion in PostgreSQL zurückgegeben werden

Antwort

1

Dies ist nicht, wie Variablenzuweisung in PL/pgSQL erfolgt.

Diese

variable=(select NAME from tbl_admin);

nicht richtig zur Arbeit gehen. Sie wählen die alle Zeilen aus der Tabelle aus, weisen diese jedoch einer einzelnen Variablen zu. Aber Sie wollen nur einen einzigen Namen - ich denke, der Name, den Sie gerade eingefügt haben. Sie sollten so etwas wie dies stattdessen tun:

insert into tbl_admin 
    (NAME,EMAIL,PASSWORD,LEVEL,AUTHENTICATION_KEY) 
values 
    ('karunya','[email protected]','password12',1,'') 
returning name into variable; 

return variable; 

Diese Zuordnung ist auch falsch:

variable1=(select sub_function());

Alles, was Sie brauchen, ist:

variable1 := sub_function(); 

Wenn Sie wirklich eine Auswahl verwenden möchten Dort müssen Sie into:

verwenden

SQLFiddle Beispiel: http://sqlfiddle.com/#!15/a344c/1

+0

Dies funktioniert nicht .. Wat ich brauche, ist eine verschachtelte Funktion. Wenn es nicht möglich ist, wie eine Unterfunktion in einer Basisfunktion aufgerufen wird. –

+0

@KarunyaSuresh "* Wie lautet die Prozedur zum Aufrufen einer Unterfunktion in einer Basisfunktion?" - Ich habe Ihnen zwei verschiedene Möglichkeiten gezeigt, dies zu tun. "" funktioniert nicht "" ist keine akzeptable Fehlerbeschreibung –

+0

FEHLER: Funktion sub_function() existiert nicht LINE 1: select sub_function() ^ HINWEIS: Keine Funktion entspricht dem angegebenen Namen und den angegebenen Argumenttypen. Möglicherweise müssen Sie hinzufügen explizite Typumwandlungen QUERY: select sub_function() CONTEXT: PL/pgSQL Funktion base_function() Zeile 6 bei SQL Anweisung –