通过Ant恢复数据库时PostgreSQL-9.2错误

时间:2014-09-11 06:45:13

标签: postgresql-9.2

我在db.stackexchange上问了这个问题,但没有得到任何答案。

Error while restoring database through Ant

我使用的是PostgreSQL-9.2,我在一个数据库中创建了一个函数。通过ant恢复此数据库时,错误将从函数中抛出

**syntax error at or near "VARCHAR"
Where: invalid type name "CUR_STOCK (v_ad_pinstance_id VARCHAR) IS
[java] SELECT sd.m_product_id"** 

引发错误的行是

DECLARE CUR_STOCK CURSOR (v_ad_pinstance_id VARCHAR)  FOR
SELECT sd.m_product_id, sd.m_locator_id, sd.m_attributesetinstance_id,
sd.c_uom_id, sd.m_product_uom_id, u.stdprecision,
ms.quantity AS qty, ms.qtyorder AS qtyorder,
ms.priority
FROM m_stock_proposed ms 
LEFT JOIN m_storage_detail sd ON ms.m_storage_detail_id  =sd.m_storage_detail_id
LEFT JOIN m_product_uom pu ON sd.m_product_uom_id = pu.m_product_uom_id
LEFT JOIN c_uom u ON pu.c_uom_id = u.c_uom_id
LEFT JOIN m_locator l ON sd.m_locator_id = l.m_locator_id
WHERE ms.ad_pinstance_id = v_ad_pinstance_id
ORDER BY ms.priority;

此查询有什么问题?

我尝试过将数据类型从 varchar更改为varchar(32)或更改字符(32) v_ad_pinstance_id 之后,但同样的错误即将发生。

请帮助!

1 个答案:

答案 0 :(得分:0)

我不是游标专家,但你的错误有一些答案。这不是数据类型的问题,而是你定义游标的方式

我认为您应该将定义更改为

DECLARE CUR_STOCK CURSOR (v_ad_pinstance_id VARCHAR)  IS

而不是

DECLARE CUR_STOCK CURSOR (v_ad_pinstance_id VARCHAR)  FOR

试一试!!

快乐编码。