Как вставить значение в pgsql, где строка для вставки равна числу массивов, переданных в функцию? - PullRequest
0 голосов
/ 18 января 2019

Я пытаюсь передать массив в функцию в postgres и хочу вставить строки в таблицу application_upload_demand, выбрав значение из application_upload. Строки, вставленные в таблицу application_upload_demand, будут равны элементу массивов. Я понятия не имею о массиве в pgsql. Пожалуйста, предложите любую вещь-

CREATE OR REPLACE FUNCTION public.application_upload_demand_insert(
    appl_nos character varying,
    appl_num character varying)
  RETURNS void AS
$BODY$
declare appl_nos character varying;array1 text[];arrayTxt text[];
BEGIN

FOREACH appl_nos SLICE i IN ARRAY arr
   LOOP
      array1[i] = appl_nos[i];
   END LOOP;

INSERT INTO application_upload_demand(file_name, file_type, documentid, doctype, file_upload, appl_no, upload_date, inspector_remarks,lab_code,div_code, dist_code,  loginid )   
select file_name, file_type, documentid, doctype, file_upload, appl_no, upload_date, inspector_remarks,lab_code,div_code, dist_code, loginid from application_upload 
where sno =ANY(arr) and appl_no = appl_num;

END
 $BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100;
ALTER FUNCTION public.application_upload_demand_insert(character varying, character varying)
  OWNER TO postgres;

Мой php код ->

try{
        $con->beginTransaction();

    if(isset($_POST['checkbox'])) {
       $sno=$_POST['checkbox'];
       $pginsstmt12="SELECT public.application_upload_demand_insert(?,?)"; 
       $newinsdata = $con->prepare($pginsstmt12);           
       $newinsdata->bindparam(1,$sno,PDO::PARAM_STR);
       $newinsdata->bindparam(2,$hidden_appl_no,PDO::PARAM_STR);
       $newinsdata->execute(); 
    }
    $con->commit();
    }catch(Exception $ex) {
                    $con->rollBack();
                    $error=$ex->getMessage();

            }
...