sql >> Databasteknik >  >> RDS >> PostgreSQL

Finns det något sätt att köra en fråga i strängvärdet (som eval) i PostgreSQL?

Om satserna du försöker "eval" alltid returnerar samma datatyp, kan du skriva en eval() funktion som använder EXECUTE som nämns av Grzegorz.

create or replace function eval(expression text) returns integer
as
$body$
declare
  result integer;
begin
  execute expression into result;
  return result;
end;
$body$
language plpgsql

Då kan du göra något som

SELECT eval('select 41') + 1;

Men det här tillvägagångssättet fungerar inte om dina dynamiska uttalanden returnerar något annorlunda för varje uttryck som du vill utvärdera.

Tänk också på att detta öppnar en enorm säkerhetsrisk genom att köra godtyckliga uttalanden. Om det är ett problem beror på din miljö. Om det bara används i interaktiva SQL-sessioner är det inget problem.



  1. finns det något sätt att logga alla misslyckade SQL-satser i Oracle 10g

  2. Oracle-datum

  3. FEL 1130 (HY000):Värden '' får inte ansluta till denna MySQL-server

  4. Byt från SQLite till PostgreSQL i ett nytt Rails-projekt