第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

重構(gòu)PL/pgSQL函數(shù)以返回各種SELECT查詢的輸出

重構(gòu)PL/pgSQL函數(shù)以返回各種SELECT查詢的輸出

喵喔喔 2019-06-13 14:52:08
重構(gòu)PL/pgSQL函數(shù)以返回各種SELECT查詢的輸出我編寫了一個輸出PostgreSQL的函數(shù)SELECT查詢格式良好的文本形式?,F(xiàn)在我不想輸出文本了,但實際上運(yùn)行生成的SELECT語句并返回結(jié)果-就像查詢本身一樣。到目前為止我所擁有的是:CREATE OR REPLACE FUNCTION data_of(integer)   RETURNS text AS$BODY$DECLARE    sensors varchar(100);   -- holds list of column names    type    varchar(100);   -- holds name of table    result  text;           -- holds SQL query        -- declare more variablesBEGIN       -- do some crazy stuff       result := 'SELECT\r\nDatahora,' || sensors ||       '\r\n\r\nFROM\r\n' || type ||       '\r\n\r\nWHERE\r\id=' || $1 ||'\r\n\r\nORDER BY Datahora;';       RETURN result;END;$BODY$LANGUAGE 'plpgsql' VOLATILE;ALTER FUNCTION data_of(integer) OWNER TO postgres;sensors保存表的列名列表。type..這些都是在職能過程中申報和填寫的。最終,他們持有的價值觀如下:sensors: 'column1, column2, column3'除了Datahora (timestamp)所有列都是類型的double precision.type :'myTable'可以是四個表之一的名稱。每個列都有不同的列,但公共列除外。Datahora.底層表的定義.變量sensors將舉行全中相應(yīng)表的列顯示在此處。type..例如:如果type是pcdmet然后sensors將是'datahora,dirvento,precipitacao,pressaoatm,radsolacum,tempar,umidrel,velvento'變量用于構(gòu)建SELECT中存儲的語句。result..比如:SELECT Datahora, column1, column2, column3FROM   myTableWHERE  id=20ORDER  BY Datahora;現(xiàn)在,我的函數(shù)返回以下語句text..我復(fù)制粘貼并在pgAdmin或psql中執(zhí)行。我想自動化這一點(diǎn),自動運(yùn)行查詢并返回結(jié)果。我怎么能這么做?
查看完整描述

3 回答

?
躍然一笑

TA貢獻(xiàn)1826條經(jīng)驗 獲得超6個贊

您可能希望返回一個光標(biāo)..試試這樣的東西(我還沒試過):

CREATE OR REPLACE FUNCTION data_of(integer)
  RETURNS refcursor AS$BODY$DECLARE
      --Declaring variables
      ref refcursor;BEGIN
      -- make sure `sensors`, `type`, $1 variable has valid value
      OPEN ref FOR 'SELECT Datahora,' || sensors ||
      ' FROM ' || type ||
      ' WHERE nomepcd=' || $1 ||' ORDER BY Datahora;';
      RETURN ref;END;$BODY$LANGUAGE 'plpgsql' VOLATILE;ALTER FUNCTION data_of(integer) OWNER TO postgres;


查看完整回答
反對 回復(fù) 2019-06-13
?
肥皂起泡泡

TA貢獻(xiàn)1829條經(jīng)驗 獲得超6個贊

我很抱歉地說,你的問題很不清楚。但是,下面將找到一個自包含的示例,說明如何創(chuàng)建和使用返回游標(biāo)變量的函數(shù)。希望能幫上忙!

begin;create table test (id serial, data1 text, data2 text);insert into test(data1, data2) values('one', 'un');
insert into test(data1, data2) values('two', 'deux');insert into test(data1, data2) values('three', 'trois');
create function generate_query(query_name refcursor, columns text[])returns refcursor 
as $$begin
  open query_name for execute 
    'select id, ' || array_to_string(columns, ',') || ' from test order by id';
  return query_name;end;$$ language plpgsql;select generate_query('english', array['data1']);fetch all in english;
  select generate_query('french', array['data2']);fetch all in french;move absolute 0 from french; -- do it again !fetch all in french;
  select generate_query('all_langs', array['data1','data2']);fetch all in all_langs;-
  - this will raise in runtime as there is no data3 column in the test tableselect generate_query('broken', array['data3']);rollback;


查看完整回答
反對 回復(fù) 2019-06-13
  • 3 回答
  • 0 關(guān)注
  • 1809 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號