我正在尝试创建一个函数/过程,允许我在某个表中生成数据以进行测试。此功能也只是执行一定数量的'假'数据插入。
我认为我在动态查询(程序的插入部分)中犯了错误,缺少了解如何正确使用字符串引号。
实际上这个函数看起来像这样:
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');
但我收到此错误:
我认为这个问题与字符串引号有关,但错误输出很奇怪,看起来它试图执行SELECT而不是执行带有synamic INSERTS的函数
提前感谢任何帮助
答案 0 :(得分:1)
双引号使用不当。
应该是
insert_query := 'INSERT INTO ' || tablename ...
您不应该替换双引号和单引号。