plpgsql: 动态插入数据 1

--目标:1、建立一个函数实现 输入一个表名(tableName)tableName,一个JSON串{feildName1:feildVale1,feildName2:feildVale2}

--          然后直接插入到表(tableName)中。

--   2、建立一个函数实现 输入一个表名(tableName)tableName,一个字段数组feildName text[],一个字段值数组:feildValue text[]

--          然后直接插入到表(tableName)中。

--==============================================

--目前,1还没有实现,待实验成功再行补上!

--==============================================

--2  的实现方法:

--获取表中id最大值加1返回
create or replace function f_getNewID(myTableName text,myFeildName text) returns integer as $$
declare
    mysql text;
    myID integer;
begin
    mysql:='select max('
        || quote_ident(myFeildName) 
        ||') from '
        || quote_ident(myTableName);
    execute mysql into myID; 
    --using myTableName,myFeildName;
    
    if myID is null or myID=0 then return 1;
    else return myID+1;
      end if;
end;
$$ language plpgsql;
--------------------------------------------------------
--创建表
 create table test(id integer,name text,code text);
---------------------------------------------------------
--创建一个函数
create or replace function f_insert_test(name text[])
returns text as $$
declare
    mysql text;
    myid integer;
begin
    myid:=f_getnewid('test','id');
    mysql:='insert into test values(' ||myid||','''
        ||array_to_string(name,''',''')
        ||''')';
    execute mysql;
    return 0; --根据具体情况返回有用值
end;
$$ language plpgsql;

看起来没有太大用处,因为后面的字段必须为一个类型。

但也是我花了两天的时间搞明白的一件事,

包括对 ARRAY,JSON的学习

-------------------------------------------------

如果谁能给个 数据类型也变化的 函数那就更好了!

当然还有第一个问题还没有解决!

加油!

原文地址:https://www.cnblogs.com/ssqhan/p/7398930.html