![](/img/trans.png)
[英]PostgreSQL - How to create an integer array from a select to pass as an argument to a function
[英]How to pass typed array as argument in PostgreSQL?
試圖將數組類型的對象作為參數傳遞並出現錯誤。
在我的案例中,如何將2個對象EmployeeType作為數組傳遞?
1. SELECT employeeTester(row ( row (687678655453,'Yan','Burkov','Yan.Burkov1992@gmail.com','@_+Yan987pl'),row (897689768768,'Ludmila','Burkov','Ludmila.Burkov1967@gmail.com','+_@Ludmia87vb')));
錯誤:函數employeetester(記錄)不存在
2. `SELECT employeeTester( row (687678655453,'Yan','Burkov','Yan.Burkov1992@gmail.com','@_+Yan987pl'),row (897689768768,'Ludmila','Burkov','Ludmila.Burkov1967@gmail.com','+_@Ludmia87vb'));`
錯誤:函數employeetester(記錄,記錄)不存在
3. `SELECT employeeTester(ARRAY [row(687678655453,'Yan','Burkov','Yan.Burkov1992@gmail.com','@_+Yan987pl'), row (897689768768,'Ludmila','Burkov','Ludmila.Burkov1967@gmail.com','+_@Ludmia87vb')]);`
錯誤:函數employeetester(record [])不存在
CREATE OR REPLACE FUNCTION employeeTester(employees EmployeeType[]) RETURNS text [] AS $$
DECLARE counter SMALLINT = 0; emp EmployeeType; errors text [];
BEGIN
FOREACH emp IN ARRAY employees LOOP
RAISE NOTICE 'Employee data %',emp;
END LOOP;
RETURN errors;
END;
$$ LANGUAGE plpgsql;
使用一個類型化的對象:
CREATE OR REPLACE FUNCTION employeeTester(employees EmployeeType) RETURNS text [] AS $$
errors text [];
BEGIN
RAISE NOTICE 'Employee id %',employees.emp_id;
RAISE NOTICE 'Employee FirstName %',employees.firstname;
RAISE NOTICE 'Employee LastName %',employees.lastname;
RAISE NOTICE 'Employee Email %',employees.email;
RAISE NOTICE 'Employee Password %',employees.e_password;
RETURN errors;
END;
$$ LANGUAGE plpgsql;
結果:
[2018-11-01 08:13:08] [00000] Employee id 687678655453
[2018-11-01 08:13:08] [00000] Employee FirstName Yan
[2018-11-01 08:13:08] [00000] Employee LastName Burkov
[2018-11-01 08:13:08] [00000] Employee Email Yan.Burkov1992@gmail.com
[2018-11-01 08:13:08] [00000] Employee Password @_+Yan987pl
如果您想通過記錄數組,則可以這樣調用。
select empTester(ARRAY[row(687678655453,'Yan','Burkov','Yan.Burkov1992@gmail.com','@_+Yan987pl')
,row(687678653,'sen','Burkov','Sen.Burkov1992@gmail.com','@_+Sen987pl')]);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.