2013-06-05 2 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 с помощью Execute

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

ответ

0

Первый, так как вы, кажется, знакомы с Stackoverflow, вот несколько этикета, а также размещение советов:

  • Всегда включайте соответствующую информацию о версии. Вот, вы, вероятно, хотите включить в PostgreSQL информации о версии
  • Дайте краткое, краткое описание того, что вы хотите сделать
  • Включите любой соответствующие исходный код (который вы сделали ... хорошую работу)
  • Включите любые ошибки (который вы сделали ... снова, хорошая работа)
  • Объясните, что вы хотите, чтобы результат был
  • Последуйте и отметьте ответ. Для многих людей, если вы не отдаете должное за правильный ответ, они вам не помогут. Просто подсказка.

Поскольку вы не делали все вышеперечисленное, я угадал, поэтому я делаю некоторые предположения на основе вашего кода. Похоже, вы хотите вернуть текст «да», если существует схема и «нет», если схема отсутствует. Если это не ваше желание, пожалуйста, обновите вопрос. Если все правильно, то кажется, что должно работать для вас:

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

sir Спасибо за советы, я буду иметь в виду, 1. Я проверяю, есть ли имя схемы и имя таблицы в табе данных. 2. имя схемы и таблицы передается как параметры, также, если они отсутствуют, я хочу создать новую схему и таблицу из переданного параметра и th eresult подзаголовка – Anusha

+0

@Anusha Я рекомендую вам отредактировать вопрос включить эту информацию. –

Смежные вопросы