簡體   English   中英

如何在PostgreSQL中傳遞類型數組作為參數?

[英]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.

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