Обсуждение: [SQL] Function with table Valued Parameters execution issue
Hello,
I am new one in Postgres and am using pgAdmin III for postgres tools.
I have created data type which replicates data table in our application and created one function with table valued parameter. I have tried lots of solution but, am not able to achieved my goal.
I would like to know how to call or execute function with table value parameter in Postgres.
I have defined type like this:
CREATE TYPE "CategoryType" AS
("CATEGORY_NODE_ID" text,
"PARENT_ID" text,
"CODE" text,
"DESCRIPTION" text,
"SEQUENCE_NUMBER" integer,
"ACCOUNT_GROUP_ID" integer,
"FINANCIALREPORT_CATEGORY_ID" integer,
"FINANCIALREPORT_DETAIL_ID" integer);
ALTER TYPE "CategoryType"
OWNER TO postgres;
I have defined following function:
CREATE OR REPLACE FUNCTION "CategoryBulkImport"(_tbl_type "CategoryType")
RETURNS
TABLE (
"CATEGORY_NODE_ID" text,
"PARENT_ID" text,
"CODE" text,
"DESCRIPTION" text,
"SEQUENCE_NUMBER" integer,
"ACCOUNT_GROUP_ID" integer,
"FINANCIALREPORT_CATEGORY_ID" integer,
"FINANCIALREPORT_DETAIL_ID" integer
)
AS
$BODY$
SELECT "CATEGORY_NODE_ID", "PARENT_ID", "CODE", "DESCRIPTION", "SEQUENCE_NUMBER",
"ACCOUNT_GROUP_ID", "FINANCIALREPORT_CATEGORY_ID", "FINANCIALREPORT_DETAIL_ID"
FROM _tbl_type;
$BODY$
LANGUAGE sql VOLATILE
COST 100;
ALTER FUNCTION "CategoryBulkImport"("CategoryType")
OWNER TO postgres;
Here I want to use table type parameter(_tbl_type) inside function with select statement but not able to access it so please suggest me a way.
Here I am not sure about my function so please correct me if I am wrong.
Thank you.
Best Regards,
Kanji Kanzariya
On 07/10/2017 05:49 AM, Kanjibhai.Kanzaria@thomsonreuters.com wrote:
> Hello,
>
> I am new one in Postgres and am using pgAdmin III for postgres tools.
>
> I have created data type which replicates data table in our application
> and created one function with table valued parameter. I have tried lots
> of solution but, am not able to achieved my goal.
>
> I would like to know how to call or execute function with table value
> parameter in Postgres.
>
> I have defined type like this:
>
> CREATE TYPE "CategoryType" AS
>
> ("CATEGORY_NODE_ID" text,
>
> "PARENT_ID" text,
>
> "CODE" text,
>
> "DESCRIPTION" text,
>
> "SEQUENCE_NUMBER" integer,
>
> "ACCOUNT_GROUP_ID" integer,
>
> "FINANCIALREPORT_CATEGORY_ID" integer,
>
> "FINANCIALREPORT_DETAIL_ID" integer);
>
> ALTER TYPE "CategoryType"
>
> OWNER TO postgres;
>
> I have defined following function:
>
> CREATE OR REPLACE FUNCTION "CategoryBulkImport"(_tbl_type "CategoryType")
>
> RETURNS
>
> TABLE (
>
> "CATEGORY_NODE_ID" text,
>
> "PARENT_ID" text,
>
> "CODE" text,
>
> "DESCRIPTION" text,
>
> "SEQUENCE_NUMBER" integer,
>
> "ACCOUNT_GROUP_ID" integer,
>
> "FINANCIALREPORT_CATEGORY_ID" integer,
>
> "FINANCIALREPORT_DETAIL_ID" integer
>
> )
>
> AS
>
> $BODY$
>
> SELECT "CATEGORY_NODE_ID", "PARENT_ID", "CODE",
> "DESCRIPTION", "SEQUENCE_NUMBER",
>
> "ACCOUNT_GROUP_ID",
> "FINANCIALREPORT_CATEGORY_ID", "FINANCIALREPORT_DETAIL_ID"
>
> FROM _tbl_type;
>
> $BODY$
>
> LANGUAGE sql VOLATILE
>
> COST 100;
>
> ALTER FUNCTION "CategoryBulkImport"("CategoryType")
>
> OWNER TO postgres;
>
> Here I want to use table type parameter(_tbl_type) inside function with
> select statement but not able to access it so please suggest me a way.
>
> Here I am not sure about my function so please correct me if I am wrong.
CREATE OR REPLACE FUNCTION "CategoryBulkImport"("CategoryType") RETURNS TABLE (
"CATEGORY_NODE_ID" text, "PARENT_ID" text,
"CODE"text, "DESCRIPTION" text, "SEQUENCE_NUMBER"
integer, "ACCOUNT_GROUP_ID" integer,
"FINANCIALREPORT_CATEGORY_ID"integer, "FINANCIALREPORT_DETAIL_ID" integer
) AS $BODY$
SELECT $1.*;
$BODY$ LANGUAGE sql VOLATILE COST 100;
See here:
https://www.postgresql.org/docs/9.6/static/xfunc-sql.html#XFUNC-SQL-FUNCTION-ARGUMENTS
>
> Thank you.
>
> Best Regards,
>
> Kanji Kanzariya
>
--
Adrian Klaver
adrian.klaver@aklaver.com