【问题标题】:How do I pass my variable value into my stored procedure如何将我的变量值传递给我的存储过程
【发布时间】:2013-12-17 17:20:08
【问题描述】:

我创建了一个变量 className 并为它赋值。 我在 oracle 中有另一个向我发送电子邮件的程序。 如何将此值传递到电子邮件的标题和正文中?

VARIABLE className varchar2(30)
    :classname := 0;
    BEGIN
     FOR i IN 
     (
        SELECT CLASS_INSTANCE_COUNT , CLASS_NAME
        FROM MODEL_CLASS_COUNTS 
        WHERE TRUNC(COUNT_DATETIME) = TRUNC(SYSDATE)
     )
        LOOP    
          IF i.CLASS_INSTANCE_COUNT = 0 
          THEN 
              :className := i.CLASS_NAME;
              EMAIL('myemail@col.com',  'email header: &className is 0', 'body: count for &className is 0');
          END IF;
        END LOOP;
    END;
    /

【问题讨论】:

  • 我不确定我是否理解您想要发生的事情。您有一个 SQLPlus 变量 :classname 和一个 SQLPlus 替换变量 &className。您是否有理由在匿名 PL/SQL 块中使用本地 PL/SQL 变量而不是使用本地 PL/SQL 变量(假设您甚至想要使用本地变量)?您是否希望 SQL*Plus 提示用户输入值(在这种情况下您需要替换变量)?还是您只是希望值来自循环?

标签: stored-procedures oracle11g


【解决方案1】:

我的猜测是您不想拥有 SQL*Plus 变量或替换变量。我猜你只是想要

BEGIN
 FOR i IN 
   (
      SELECT CLASS_INSTANCE_COUNT , CLASS_NAME
        FROM MODEL_CLASS_COUNTS 
       WHERE TRUNC(COUNT_DATETIME) = TRUNC(SYSDATE)
   )
 LOOP    
   IF i.CLASS_INSTANCE_COUNT = 0 
   THEN 
     EMAIL('myemail@col.com',  
           'email header: ' || i.class_name || ' is 0', 
           'body: count for ' || i.class_name || ' is 0');
   END IF;
 END LOOP;
END;

【讨论】:

  • 是的。我刚从散步回来,意识到我可以做到这一点:) 这正是我所需要的。谢谢@贾斯汀洞穴
猜你喜欢
  • 2010-09-29
  • 1970-01-01
  • 2011-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多