Sql Oracle-根据参数返回查询结果的函数
我正在尝试编写一个Oracle PL/SQL函数,该函数将返回应用程序的给定状态id,这样,如果返回的状态类型是特定值,我就可以将数据归档到历史记录表中 在本例中,我的状态类型为“已批准”、“待定”或“已拒绝” 到目前为止,我编写了这个函数,这样我就可以在IF语句中运行该方法,在归档数据之前检查当前状态类型Sql Oracle-根据参数返回查询结果的函数,sql,oracle,Sql,Oracle,我正在尝试编写一个Oracle PL/SQL函数,该函数将返回应用程序的给定状态id,这样,如果返回的状态类型是特定值,我就可以将数据归档到历史记录表中 在本例中,我的状态类型为“已批准”、“待定”或“已拒绝” 到目前为止,我编写了这个函数,这样我就可以在IF语句中运行该方法,在归档数据之前检查当前状态类型 CREATE OR REPLACE FUNCTION get_status(curr_id NUMBER) RETURN VARCHAR2 AS this_type status_type;
CREATE OR REPLACE FUNCTION get_status(curr_id NUMBER)
RETURN VARCHAR2 AS this_type status_type;
BEGIN
SELECT status_type
INTO this_type
FROM status
WHERE status_id LIKE curr_id;
RETURN this_type;
END get_status;
尽管编译,我还是收到一个错误,告诉我我的PL/SQL语句被忽略了。我是Oracle的新手,所以我可能在这里遗漏了一些简单的东西,有人能给我一些关于我的代码哪里出了问题的建议吗 提前感谢,,
Alex.你能分享一下错误吗?当然:错误(2,31):PLS-00201:必须声明标识符“STATUS\u TYPE”,错误(5,3):PL/SQL:SQL语句被忽略——据我所知,“this\u TYPE STATUS\u TYPE”行正在将该类型的别名设置为STATUS\u TYPE(状态表中的一列)?啊哈,我明白了,这是有意义的!谢谢你,高拉夫!注:1。使用不带通配符的
like
条件等同于使用等号。如果不需要进行模式匹配,则切换到简单等号;2.在不同的情况下,您可能会:a)点击未找到的数据
错误或b)太多行
错误。@NicholasKrasnov:你说得对,@Alex:请记住这一点谢谢你提醒@NicholasKrasnov
CREATE OR REPLACE FUNCTION get_status(curr_id NUMBER)
RETURN VARCHAR2
AS
--%TYPE is used to declare variables with relation to the data type of a column
--in an existing table
this_type status.status_type%TYPE; --change is required here
BEGIN
SELECT status_type
INTO this_type
FROM status
WHERE status_id LIKE curr_id;
RETURN this_type;
END get_status;
/