Sql “帮助”;“作为分配目标的表达式”;错误

Sql “帮助”;“作为分配目标的表达式”;错误,sql,plsql,Sql,Plsql,这里有一个简单的问题,我正在编写一个函数,但是我在设置我的第一个if语句时遇到了问题,我的尝试如下,但我不断得到“表达式不能用作赋值目标”的错误,行“Type:=CE;”和“Type:=UG;”我确信有一个快速修复方法。。。。。。有人知道吗 CREATE OR REPLACE FUNCTION SCHEMA1."FUNCTION1" ( Id IN VARCHAR2, term IN V

这里有一个简单的问题,我正在编写一个函数,但是我在设置我的第一个if语句时遇到了问题,我的尝试如下,但我不断得到“表达式不能用作赋值目标”的错误,行“Type:=CE;”和“Type:=UG;”我确信有一个快速修复方法。。。。。。有人知道吗

CREATE OR REPLACE FUNCTION SCHEMA1."FUNCTION1" (   Id   IN VARCHAR2,
                                                   term IN VARCHAR2,
                                                   Type IN VARCHAR2 default NULL )
RETURN VARCHAR2 IS


BEGIN
IF Type IS NULL
THEN
    IF SUBSTR(term,5,6) = 'Q'
    THEN
        Type := 'CE';
    ELSE
        Type := 'UG';
    END IF;
END IF;
........

在我看来,您正在将“Type”作为参数传入,然后尝试分配给它。您打算返回“CE”/“UG”是否基于术语?如果是这样,请引入一个新变量或更改Type:=以返回。

在我看来,您好像是在将“Type”作为参数传入,然后尝试分配给它。您打算返回“CE”/“UG”是否基于术语?如果是,请引入新变量或更改类型:=以返回。

是否声明一个保留变量以在函数中使用

CREATE OR REPLACE FUNCTION SCHEMA1."FUNCTION1" (   Id   IN VARCHAR2,
                                                   term IN VARCHAR2,
                                                   Type IN VARCHAR2 default NULL )
RETURN
  VARCHAR2
IS
  iType VARCHAR2;    
BEGIN

iType := Type;

IF iType IS NULL
THEN
    IF SUBSTR(term,5,6) = 'Q'
    THEN
        iType := 'CE';
    ELSE
        iType := 'UG';
    END IF;
END IF;
........

声明一个在函数中使用的保持变量

CREATE OR REPLACE FUNCTION SCHEMA1."FUNCTION1" (   Id   IN VARCHAR2,
                                                   term IN VARCHAR2,
                                                   Type IN VARCHAR2 default NULL )
RETURN
  VARCHAR2
IS
  iType VARCHAR2;    
BEGIN

iType := Type;

IF iType IS NULL
THEN
    IF SUBSTR(term,5,6) = 'Q'
    THEN
        iType := 'CE';
    ELSE
        iType := 'UG';
    END IF;
END IF;
........

好的,这个很好,谢谢!接下来的问题是……我只是好奇,为什么这会起作用,因为从我所看到的,它实际上在做同样的事情。这只是给参数赋值和给变量赋值之间的区别吗?我不是Oracle专家,所以我过去是这样对自己进行合理化的:Oracle函数的参数的行为就像是对传入的“对象”的引用。通过为参数指定一个新值,您将为用作输入的任何对象指定一个新值。但是输入可能是两个字段的串联,因此不可能确定应该更新什么。这是一个非常模糊的解释,我知道,也许有更好的知情人士会回答你:)好的,这运行良好,谢谢!接下来的问题是……我只是好奇,为什么这会起作用,因为从我所看到的,它实际上在做同样的事情。这只是给参数赋值和给变量赋值之间的区别吗?我不是Oracle专家,所以我过去是这样对自己进行合理化的:Oracle函数的参数的行为就像是对传入的“对象”的引用。通过为参数指定一个新值,您将为用作输入的任何对象指定一个新值。但是输入可能是两个字段的串联,因此不可能确定应该更新什么。这是一个非常模糊的解释,我知道,也许有更好的知情人士会回答你:)“Type”这里是一个输入参数。如果你想改变它,把它变成一个输入输出参数。好的,简单的解决方案,有意义。谢谢这里的“Type”是一个输入参数。如果你想改变它,把它变成一个输入输出参数。好的,简单的解决方案,有意义。谢谢