什么:和'运营商的意思

时间:2013-03-17 03:13:04

标签: 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||: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||'

我在http://docs.oracle.com/cd/B28359_01/appdev.111/b28843/tdddg_procedures.htm#CIHGDECD阅读了教程,但找不到任何帮助。

1 个答案:

答案 0 :(得分:2)

在触发器上下文之外,列:用于绑定语句中的变量。

例如:

EXECUTE IMMEDIATE 'UPDATE mytable SET age = 25 WHERE age = :1' 
     USING IN localVarAge;

在这种情况下,:1值将替换为localVarAge的值。 ':'变量的顺序出现在准备好的陈述中,而不是它们的实际标签。

在您的代码中显然缺少一部分,此部分var1 := :Emp_cd||:Emp_lst_nm||:Emp_fst_nm;应在引号内。无论如何,这是有道理的,因为你有一个结束语和连接之后。