sql >> Databáze >  >> RDS >> PostgreSQL

Změna typu sloupce používaného v jiných zobrazeních

Myslím, že to dělá, co chcete, i když jsem přesunul seznam zobrazení na konec args, aby byl kompatibilní se sémantikou VARIADIC.

CREATE OR REPLACE FUNCTION recreate_views(run_me text, VARIADIC views text[])
  RETURNS void
AS  $$
DECLARE
  view_defs text[];
  i integer;
  def text;
BEGIN
  for i in array_lower(views,1) .. array_upper(views,1) loop
    select definition into def from pg_views where viewname = views[i];
    view_defs[i] := def;
    EXECUTE 'DROP VIEW ' || views[i];
  end loop;

  EXECUTE run_me;

  for i in reverse array_upper(views,1) .. array_lower(views,1) loop
    def = 'CREATE OR REPLACE VIEW ' || quote_ident( views[i] ) || ' AS ' || view_defs[i];
    EXECUTE def;
  end loop;

END
$$
LANGUAGE plpgsql;


  1. Escapování speciálních znaků v to_tsquery

  2. Možné návratové hodnoty pro mysql_affected_rows()

  3. Vložte aktualizaci uloženou proc na SQL Server

  4. Mapování pohledu SQL na entitu hibernace jpa