我是Postgres和plpsql的新手,如果答案很明显的话,我很抱歉。但是我没能找出我做错了什么。当我使用sample DB函数时,一切都很好。当我试图创建自己的:
CREATE OR REPLACE FUNCTION get_trans (p_param VARCHAR)
RETURNS TABLE (
amount money,
transactionId UUID
)
AS $$
BEGIN
RETURN QUERY SELECT
amount,
transactionId
FROM
transactions;
END; $$
LANGUAGE 'plpgsql';
函数执行,但通过运行以下测试语句对其进行测试失败:
SELECT *
FROM public.get_trans(
'bs'
)
出现此错误时:
ERROR: relation "public.transactions" does not exist
LINE 4: FROM public.transactions
^
QUERY: SELECT
amount,
transactionId
FROM public.transactions
CONTEXT: PL/pgSQL function get_trans(character varying) line 4 at RETURN
QUERY
SQL state: 42P01
看起来这是plpsql的一个非常常见的错误,我意识到我很可能遗漏了smth显然,但是到目前为止,这些答案对我的情况都没有帮助。是一个直行的站立桌,目前只有主键。
任何提示都非常感谢。
更新:因此,感谢LD I发现,尽管语法错误,但创建的表在任何模式中都不存在。结果发现postgres与MSSQL的区别更大,而且很难闪现脚本错误。主要错误是-不能在表或列定义中使用camel case。一旦我修复了这些并重新运行函数,一切都会好起来的。