sql >> Database >  >> RDS >> PostgreSQL

Is er een manier om een ​​query uit te voeren binnen de tekenreekswaarde (zoals eval) in PostgreSQL?

Als de instructies die u probeert te "evalueren" altijd hetzelfde gegevenstype retourneren, kunt u een eval()-functie schrijven die de door Grzegorz genoemde EXECUTE gebruikt.

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

Dan zou je iets kunnen doen als

SELECT eval('select 41') + 1;

Maar deze aanpak werkt niet als uw dynamische uitspraken iets anders opleveren voor elke uitdrukking die u wilt evalueren.

Houd er ook rekening mee dat dit een enorm beveiligingsrisico met zich meebrengt door willekeurige verklaringen uit te voeren. Of dat een probleem is, hangt af van uw omgeving. Als dat alleen in interactieve SQL-sessies wordt gebruikt, is dat geen probleem.



  1. Vernieuw een gerealiseerde weergave automatisch met behulp van een regel of melding

  2. Hoe MySQL-processen te tonen

  3. ADDTIME() Voorbeelden – MySQL

  4. Op weg naar Postgres-XL 9.5