使用PL / pgSQL函数生成测试数据

时间:2014-03-10 13:52:43

标签: sql postgresql plpgsql

我正在尝试创建一个函数/过程,允许我在某个表中生成数据以进行测试。此功能也只是执行一定数量的'假'数据插入。

我认为我在动态查询(程序的插入部分)中犯了错误,缺少了解如何正确使用字符串引号。

实际上这个函数看起来像这样:

DECLARE
  i_counter INTEGER;
  insertQuery TEXT;

BEGIN
  i_counter := startcount;

  WHILE i_counter < qtainsert LOOP
    insertQuery := 'INSERT INTO '
                   || tablename 
                   || '(message_id, from_uid, to_uid, oggetto, content, datetime)' 
                   || 'VALUES(DEFAULT, 0, 0,'''
                   || baseobj || i_counter || ''',''' 
                   || basemsg || i_counter 
                   || ''', NOW() )';

    i_counter := i_counter + 1;

    EXECUTE insertQuery;
  END LOOP;
END;

我用这种方式调用函数:

SELECT insert_data('messaggio', 1, 10, 'oggetto', 'messggio');

但我收到此错误: enter image description here

我认为这个问题与字符串引号有关,但错误输出很奇怪,看起来它试图执行SELECT而不是执行带有synamic INSERTS的函数

提前感谢任何帮助

1 个答案:

答案 0 :(得分:1)

双引号使用不当。

应该是

insert_query := 'INSERT INTO ' || tablename ...

您不应该替换双引号和单引号。