我在PostgreSQL中创建了包含4列(employee_id
,first_name
,last_name
和date_of_birth
,所有NOT NULL
和employee_id
的表员工是主键。)
现在,我的表中有704条记录,并使用for循环添加更多记录。为此,我写了这段代码:
DO
$do$declare
r text;
BEGIN
FOR i in 705..50000 LOOP
r = i::text||'days';
INSERT INTO employees(employee_id, first_name, last_name, date_of_birth)
VALUES (
i,
'ww'||i::varchar,
'ss'||i::varchar,
'1980-01-01 00:00:00'+interval r
);
END LOOP;
END
$do$;
但它在使用r时出错。我该如何修复此代码?
答案 0 :(得分:0)
请试试这个
CREATE OR REPLACE FUNCTION sp_test()
RETURNS void AS
$BODY$
declare r text;
begin
for i in 705..750
loop
r := i::text||' days';
insert into employees(employee_id, first_name, last_name, date_of_birth)
values (i,
'ww'||i::varchar,
'ss'||i::varchar,
'1980-01-01 00:00:00'::TIMESTAMP + r::interval);
end loop;
end
$BODY$
LANGUAGE plpgsql;
更多说明:您的代码为i::text || 'days'
,我们会根据需要输出705days
而不是705 days
。另一个地方是'1980-01-01 00:00:00' + interval r
,我会更清楚地将其更改为'1980-01-01 00:00:00'::TIMESTAMP + r::interval
。
我希望这会对你有所帮助。