포스트 그레스 함수에서 커서를 반환 PHP 데이터에 액세스하는 방법 :는 포스트 그레스 기능
CREATE OR REPLACE FUNCTION lcp_product_find(IN pi_prd_code text DEFAULT NULL::text, OUT po_cursor refcursor, OUT po_err_num integer, OUT po_err_desc text)
RETURNS record AS
$BODY$
DECLARE
v_proc_name text;
v_prd_id integer;
BEGIN
v_proc_name := 'lcp_product_find';
po_cursor := 'po_cursor';
-- some selects from lct_products table
OPEN po_cursor FOR
select "PRD_ID", "PRD_FAMILY", "PRD_NAME", "PRD_DESC", "PRD_BRAND",
"PRD_MODEL", "PRD_STATUS", "PRD_AUDIT_CD", "PRD_AUDIT_MD", "PRD_CODE"
from lct_products where "PRD_ID" = v_prd_id;
RETURN;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
을 일반적으로, 함수는 에러가 발생하는 경우 추가로 err_number 및 err_desc (모든 데이터가 발견 된 경우) 및 커서의 제품 데이터를 반환합니다.
이제 po_cursor의 함수에서 반환 한 PHP 데이터에서 액세스하려고합니다. 내가 뭐하는 거지 것은 : 내가 받아 봐 그 결과
<?php
$conn = new PDO("pgsql:host=localhost;port=5432;dbname=name", "user", "pas");
$conn->beginTransaction();
$prd_code = $_POST['prd_code']; //echo $prd_code;
// call the function
$stmt = $conn->prepare("select lcp_product_find(:pi_prd_code)");
$stmt->bindParam('pi_prd_code', $prd_code, PDO::PARAM_STR);
$stmt->execute();
$cursors = $stmt->fetchAll();
$stmt->closeCursor();
?>
그렇게 STH :
Array
(
[0] => Array
(
[lcp_product_find] => (po_cursor,,)
[0] => (po_cursor,,)
)
)
는 당신이 밖으로 정렬 나를 도와 드릴까요? 내가 po_cursor에서 반환 된 데이터를 얻지 못한다면 무엇을 잘못하고 있습니까? PDO없이 수행 할 수 있습니까?