Oracle 什么是:和';运营商的意思是
我必须对Oracle存储过程进行修改,该存储过程包含以下行Oracle 什么是:和';运营商的意思是,oracle,stored-procedures,plsql,Oracle,Stored Procedures,Plsql,我必须对Oracle存储过程进行修改,该存储过程包含以下行 InsStmt = 'INSERT INTO EMPLOYEE (Emp_cd, Emp_lst_nm, Emp_fst,nm) VALUES (:Emp_cd, :Emp_lst_nm, :Emp_fst_nm);'; varExec :=' DECLARE var1 VARCHAR2(100); BEGIN var1 := :Emp_cd||
InsStmt = 'INSERT INTO EMPLOYEE (Emp_cd, Emp_lst_nm, Emp_fst,nm) VALUES
(:Emp_cd, :Emp_lst_nm, :Emp_fst_nm);';
varExec :='
DECLARE
var1 VARCHAR2(100);
BEGIN
var1 := :Emp_cd||:Emp_lst_nm||:Emp_fst_nm;
'||InsStmt||'
END;';
EXECUTE IMMEDIATE varExec USING ip_param_cd, ip_param_lnm, ip_param_fnm;
我对Oracle存储过程只有基本的了解。经过一些研究,我发现| |运算符用于连接字符串
但我仍然想知道下面的陈述是什么意思
var1 := :Emp_cd||:Emp_lst_nm||:Emp_fst_nm;
'||InsStmt||'
我在浏览了教程,但找不到任何帮助。在触发器上下文之外,列
:
用于绑定语句中的变量
例如:
EXECUTE IMMEDIATE 'UPDATE mytable SET age = 25 WHERE age = :1'
USING IN localVarAge;
在这种情况下,:1
值将替换为localVarAge
的值。
“:”变量在准备好的语句中出现的顺序很重要,而不是它们的实际标签
在您的代码中显然缺少一个片段,这部分
var1:=:Emp_cd||:Emp_lst|u nm|:Emp_fst|nm代码>应该在引号内。不管怎样,这都是有意义的,因为在那之后你有一个结束引用和一个连接。这是从更大的图片中提取的,我们需要完整的代码。用完整的代码更新这是一段毫无意义的代码。让我们猜测作者的意图是没有意义的。你所能做的就是问他们,或者问任何让你改变现状的人。VAR1赋值毫无意义,因为它(显然)没有在任何地方使用。也许它是用于审计或调试的?谢谢你的帮助。实际上,他们正在创建一个动态过程语句并执行它。仍然不明白var1有什么用;哦,我想他们不用它!可能是过去代码的遗留物。。。例如,对于dbms_在插入之前的输出,我认为我们可以调整该过程,您应该对性能优化的整个代码提出另一个问题,我认为这目前不是最佳的