Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

238
Views
Cómo usar variable en la definición de vista en Postgres/plpgsql

Estoy usando plpgsql con Postgres 10.6. Tengo una función que declara y da valor a una variable. Esa función también define una vista, y me gustaría usar la variable dentro de la definición.

 create view myview as select some_columns from mytable where id = _id /*_id is declared earlier in function */ ;

En este caso se puede definir la función, pero al ejecutarla da error: UndefinedColumn: column "_id" does not exist

¿Es tal cosa posible en Postgres? ¿Pueden las vistas incluir variables como parte de su definición?

Veo aquí que en BigQuery (que nunca he usado), lo que pido no es posible, lo que me hace pensar que tampoco puede ser posible en plpgsql.

No es gran cosa, pero tengo curiosidad. Una solución alternativa, y probablemente la solución recomendada, es pasar el _id cuando selecciono desde la vista (por ejemplo, select * from myview where id = 3 ). O, si realmente quiero mantener la llamada de selección simple (lo que hago, porque mi implementación real es más complicada y tiene múltiples variables), podría definir la vista como una cadena y usar execute dentro de la función (esto es todo cosas internas utilizado en la construcción y creación de una base de datos, no en una situación en la que los diversos riesgos inherentes a sql dinámico son una preocupación).

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

No, no puede pasar una variable a una vista. Pero puedes hacer esto con una función:

 create function my_view_function(p_id integer) returns table (id int, column_1 int, column2 text) as $$ select id, column_1, column_2 from my_table where id = p_id; $$ language sql stable;

Entonces úsalo así

 select * from my_view_function(42);
over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!