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||

我必须对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||: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_在插入之前的输出,我认为我们可以调整该过程,您应该对性能优化的整个代码提出另一个问题,我认为这目前不是最佳的