我在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 之后,但同样的错误即将发生。
请帮助!
答案 0 :(得分:0)
我不是游标专家,但你的错误有一些答案。这不是数据类型的问题,而是你定义游标的方式
我认为您应该将定义更改为
DECLARE CUR_STOCK CURSOR (v_ad_pinstance_id VARCHAR) IS
而不是
DECLARE CUR_STOCK CURSOR (v_ad_pinstance_id VARCHAR) FOR
试一试!!
快乐编码。