2010-04-19 6 views
2

J'essaie de déclarer une variable dans un code comme celui-ci, mais cela ne fonctionne pas. Pouvez-vous me dire quel est le problème?comment déclarer une variable dans PostgreSQL

ERROR: syntax error at or near "VARCHAR" 
LINE 2: p_country VARCHAR; 


DECLARE 
    p_country VARCHAR; 
p_country : = ''; 
SELECT p_country; 
+0

Veuillez donner plus de données à propos de votre problème – Karthik

+0

Il est préférable d'écrire comme celui-ci: DECLARE p_country VARCHAR; p_country: = ''; SELECT p_country; – user307880

+0

Quel est le problème avec la syntaxe. – user307880

Répondre

2

Au sein d'une fonction PL/pgSQL vous pouvez déclarer des variables comme ceci:

CREATE FUNCTION identifier (arguments) RETURNS type AS ' 
    DECLARE 

    -- Declare an integer. 
    subject_id INTEGER; 

    -- Declare a variable length character. 
    book_title VARCHAR(10); 

     -- Declare a floating point number. 
    book_price FLOAT; 

    BEGIN 
    statements 
    END; 
' LANGUAGE 'plpgsql'; 

Source: http://www.commandprompt.com/ppbook/x19832

+0

Mais je veux déclarer une variable hors de la fonction. C'est possible? – user307880

+1

[Pas encore] (http://developer.postgresql.org/pgdocs/postgres/sql-do.html) –

5

Créer un nouveau paramètre dans postgresql.conf pour custom_variable_classes:

custom_variable_classes = 'var' 

Rechargez la configuration, vous avez maintenant la variable "var" disponible dans toutes vos bases de données.

Pour créer la p_country variables, utilisez SET:

SET var.p_country = 'US'; 
SELECT current_setting('var.p_country') AS p_country; 

Ce n'est pas une beauté, mais il fonctionne.

+0

C'est intéressant. Mais le problème est que je fais des requêtes sur le serveur distant. Je ne pense pas que je serai autorisé à éditer postgresql.conf. – user307880

+0

Vous pourriez leur demander d'ajouter cela dans la configuration, ce n'est pas une science de fusée. Vous pouvez également utiliser une table temporaire pour placer vos variables. –

Questions connexes