簡體   English   中英

如何將參數從bat文件或命令行傳遞到plpgsql函數?

[英]How to pass parameters from a bat file or a command line to a plpgsql function?

這是我的SQL代碼:

create extension if not exists dblink;

drop function if exists  func_statistic(host varchar(32),port varchar(32),username varchar(32),password varchar(32));
create or replace function func_statistic(host varchar(32),port varchar(32),username varchar(32),password varchar(32)) returns int as
$$
declare v_dbname text;
declare v_dest_file text;
declare v_connect_info text;
declare v_sql_str text;
begin
   ......
end;
$$ language plpgsql;


select func_statistic(:host,:port,:username,:password);

我在蝙蝠上寫道:

psql -U %user% -h %host% -p %port%  -v host=%host% -v port=%port% 
-v username=%user% -v password=%PGPASSWORD% -c %sql_file% cmsdb 

錯了 我不能以這種方式將參數傳遞給.sql文件的功能。 您知道如何將參數傳遞給plpgsql函數,或者為什么不能傳遞參數? 非常感謝你。

在這種情況下使用-c選項可能是錯誤的。 可能您應該使用-f選項或從stdin讀取。 文本參數應使用語法:'varname'進行轉義,並在撇號之間關閉:

CREATE OR REPLACE FUNCTION public.fx(text)
 RETURNS void
 LANGUAGE plpgsql
AS $function$
begin
  raise notice '>>%<<', $1;
end;
$function$

[oracle@ora2pg migrace]$ echo "select fx(:'xxx')" | psql -v xxx='aaaaa bbbb'
Time: 1,962 ms
Debug assertions "off"
NOTICE:  >>aaaaa bbbb<<
┌────┐
│ fx │
╞════╡
│    │
└────┘
(1 row)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM