2013-06-05 67 views
1
 CREATE OR REPLACE FUNCTION chkfunction(schemaname text, state text, wallmaterial text, roofmaterial text) 
      RETURNS text AS 
      $BODY$ 
      DECLARE 
      tblinclusion text; 

     BEGIN 


      execute'if (SELECT exists(select schema_name FROM information_schema.schemata WHERE schema_name = '||$1 ||')) 
      then 
      tblinclusion:="yes"; 
      return tblinclusion; 
      else 
      tblinclusion:="no"; 
      return tblinclusion;' 
      Using schemaname; 
     END; 
     $BODY$ 
     LANGUAGE plpgsql 

執行Postgres的功能,但它引發的錯誤:嘗試使用執行

syntax error at or near "if" 
LINE 1: if (SELECT exists(select schema_name FROM information_schem... 

回答

0

首先,因爲你似乎是新的#1,這裏有一些禮儀和張貼提示:

  • 始終包含相關的版本信息。在這裏,你可能要包括PostgreSQL的版本信息
  • 給你想要做
  • 任何相關的源代碼(你做了...好工作)
  • 包含任何錯誤(什麼是短暫的,簡潔的描述你做了...再次,很好的工作)
  • 解釋你想要的結果是
  • 跟進並標記答案。對很多人來說,如果你沒有給出正確的答案,他們不會幫助你。只是一個小費。

既然你沒有做上述所有的事情,我還是猜測,所以我正在根據你的代碼做一些假設。看起來好像要在模式存在的情況下返回文本'yes',如果模式不存在則返回'no'。如果這不是你的願望,請更新問題。如果正確的話,它看起來像下面應該爲你工作:

CREATE OR REPLACE FUNCTION chkfunction2(schemaname text) 
RETURNS text AS 
$BODY$ 
DECLARE 
BEGIN 

    PERFORM schema_name FROM information_schema.schemata WHERE schema_name = $1; 

    IF FOUND THEN 
     RETURN 'yes'; 
    ELSE 
     RETURN 'no'; 
    END IF; 

END; 
$BODY$ 
LANGUAGE plpgsql 

注:我看不出有任何需要額外的變量或聲明,所以我離開了出來。另外,請注意我的解決方案是用PostgreSQL 9.1開發和測試的。

歡迎來到StackOverflow!

+0

先生感謝提示,我會記住, 1.我正在檢查數據庫中是否存在模式名稱和表名。 2.模式和表名稱作爲參數傳遞, 如果這些都不存在我想創建一個新的模式和表從傳遞的參數和子查詢結果 – Anusha

+0

@Anusha我建議你編輯你的問題包括這些信息。 –

相關問題