错误:在“或”附近出现语法错误;“返回”;关于存储过程-PostgreSQL 8.1.23

错误:在“或”附近出现语法错误;“返回”;关于存储过程-PostgreSQL 8.1.23,postgresql,stored-procedures,version,Postgresql,Stored Procedures,Version,我有一个存储过程,如下所示: INSERT INTO bakersfun.orderhead (order_id,order_dt, customer_id, route_id, routenum, ordertype, create_station_id, create_stationtype, create_time,create_user_id,tran_time, tran_user_id,station_id) values (nextval('b

我有一个存储过程,如下所示:

 INSERT INTO bakersfun.orderhead 

     (order_id,order_dt, customer_id, route_id, routenum, ordertype, create_station_id, create_stationtype, create_time,create_user_id,tran_time, tran_user_id,station_id)

   values 

     (nextval('bakersfun.orderhead_order_id_seq'),$1, $2, $3, $4, $5, $6, $7, LOCALTIMESTAMP, $8, 

    default, default,$9) 

   returning  order_id;
new.sql:15: ERROR: syntax error at or near "returning"
LINE 15: returning order_id;
执行时,我得到如下错误:

 INSERT INTO bakersfun.orderhead 

     (order_id,order_dt, customer_id, route_id, routenum, ordertype, create_station_id, create_stationtype, create_time,create_user_id,tran_time, tran_user_id,station_id)

   values 

     (nextval('bakersfun.orderhead_order_id_seq'),$1, $2, $3, $4, $5, $6, $7, LOCALTIMESTAMP, $8, 

    default, default,$9) 

   returning  order_id;
new.sql:15: ERROR: syntax error at or near "returning"
LINE 15: returning order_id;
PostgreSQL版本:PostgreSQL 8.1.23

我注意到它在PostgreSQL 8.4.20上运行

有什么替代方案可以在PostgreSQL 8.1.23上运行
DECLARE 
  l_id integer;   -- change data type according to you.
BEGIN

INSERT INTO bakersfun.orderhead 

     (order_id,order_dt, customer_id, route_id, routenum, ordertype, create_station_id, create_stationtype, create_time,create_user_id,tran_time, tran_user_id,station_id)

   values 

     (nextval('bakersfun.orderhead_order_id_seq'),$1, $2, $3, $4, $5, $6, $7, LOCALTIMESTAMP, $8, 

    default, default,$9)     
  returning order_id into l_id; --< store the returned ID in local variable
   return l_id; --< return this variable
END
l_id整数;--根据需要更改数据类型。 开始 插入bakersfun.orderhead (订单id、订单dt、客户id、路线id、路线编号、订单类型、创建站点id、创建站点类型、创建时间、创建用户id、传输时间、传输用户id、站点id) 价值观 (nextval('bakersfun.orderhead_order_id_seq'),$1、$2、$3、$4、$5、$6、$7,LOCALTIMESTAMP,$8, 默认值,默认值,$9) 将订单id返回到l_id;--<将返回的ID存储在局部变量中 返回l_id;--<返回此变量 结束 更多参考请查看这两个链接


我希望这两个链接能帮助您找到answer@ShubhamBatra将其作为答案发布。您的问题是否已解决?@Shubham Batra尚未成为好友。获取错误为
SQL错误:错误:语法错误位于或接近“整数”行2:l_id integer;^
订单id
为串行类型。您可以看到,我正在插入
order\u id
作为
nextval('bakersfun.orderhead\u order\u id\u seq')
,因此
order\u id
不需要指定as IN或OUT参数。您可以创建sql Fiddle吗?它只有9.3版。在9.3中,一切都会很好。所以不能被创造