Sql “帮助”;“作为分配目标的表达式”;错误
这里有一个简单的问题,我正在编写一个函数,但是我在设置我的第一个if语句时遇到了问题,我的尝试如下,但我不断得到“表达式不能用作赋值目标”的错误,行“Type:=CE;”和“Type:=UG;”我确信有一个快速修复方法。。。。。。有人知道吗Sql “帮助”;“作为分配目标的表达式”;错误,sql,plsql,Sql,Plsql,这里有一个简单的问题,我正在编写一个函数,但是我在设置我的第一个if语句时遇到了问题,我的尝试如下,但我不断得到“表达式不能用作赋值目标”的错误,行“Type:=CE;”和“Type:=UG;”我确信有一个快速修复方法。。。。。。有人知道吗 CREATE OR REPLACE FUNCTION SCHEMA1."FUNCTION1" ( Id IN VARCHAR2, term IN V
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”是一个输入参数。如果你想改变它,把它变成一个输入输出参数。好的,简单的解决方案,有意义。谢谢