在 SQL 中是否可以有常量函数参数?

Is it possible to have constant function parameters in SQL?

是否可以在 SQL 中使用常量函数参数以确保以后不更改值?

这样的东西不起作用:

function my_func(
        first_param  constant varchar2
      , second_param constant varchar2
      ) return varchar2
   is
... -- Rest

没有必要,因为您无法重新定义 IN 参数。例如:

CREATE FUNCTION does_not_work(
  a IN NUMBER,
  b IN NUMBER
) RETURN NUMBER
IS
BEGIN
  IF a < 2 THEN
    a := 2;
  END IF;
  RETURN GREATEST( a, b );
END;
/

(注意:IN关键字是可选的,默认的参数方向;如果你在声明签名时不带IN关键字,你会得到同样的错误。)

给出:

ORA-24344: success with compilation error

如果您查看错误:

SELECT * FROM USER_ERRORS;

输出:

NAME TYPE SEQUENCE LINE POSITION TEXT ATTRIBUTE MESSAGE_NUMBER
DOES_NOT_WORK FUNCTION 1 8 5 PLS-00363: expression 'A' cannot be used as an assignment target ERROR 363
DOES_NOT_WORK FUNCTION 2 8 5 PL/SQL: Statement ignored ERROR 0

这告诉您不能使用 IN 参数作为赋值目标。