PLSQL - 如何检查&输入是一个数字

斯塔维尔
DECLARE
  TEAM_ID NUMBER := &INPUT;
  CURSOR C_WORKER IS
  SELECT FIRST_NAME, LAST_NAME
  FROM EMPLOYEES
  WHERE DEPARTMENT_ID = TEAM_ID;
  V_LAST_NAME EMPLOYEES.LAST_NAME%TYPE;
  V_FIRST_NAME EMPLOYEES.FIRST_NAME%TYPE;
BEGIN
  OPEN C_WORKER;
    LOOP
      FETCH C_WORKER INTO V_LAST_NAME, V_FIRST_NAME;
      EXIT WHEN C_WORKER%NOTFOUND;
      DBMS_OUTPUT.PUT_LINE(V_LAST_NAME || ' ' || V_FIRST_NAME);
    END LOOP;
  CLOSE C_WORKER;
END;

我如何更改此代码以检查 TEAM_ID(&input) 是否为数字?如果是 - 打开光标,如果不是,打印“请写一个数字”。

最小值是 1,最大值是 TEAM_ID 的最大数量?或者它只是一个数字?

阿列克谢

要处理替换变量,您需要将它们用引号括起来并将它们视为字符串。

例如,这可能是一种执行您需要的操作的方法:

declare
    -- define a varchar2 variable to host your variable; notice the quotes
    vStringInput        varchar2(10) := '&input';
    vNumInput           number;
    vVal                number;
    -- define a parametric cursor, to avoid references to variables
    cursor cur(num number) is select num from dual;
begin
    -- try to convert the string to a number
    begin
        vNumInput :=  to_number(vStringInput);
    exception
        when others then 
            vNumInput := null;
    end;
    --
    -- check the values, to understand if it is a number ( vNumInput NULL or NOT NULL)
    -- and, in case it's a number, if it suits your criteria
    case
        when vNumInput is null then 
            dbms_output.put_line('not a number');
        when vNumInput < 1 then 
            dbms_output.put_line('less than 1');
        -- whatever check you need on the numeric value
        else
            -- if the value is ok, open the cursor
            open cur(vNumInput); 
            loop
                fetch cur into vVal;                
                exit when cur%NOTFOUND;
                dbms_output.put_line('value from cursor: ' || vVal);
            end loop;            
    end case;    
end;
/

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

用PLSQL中的另一个数字替换日期中的日期部分

来自分类Dev

如何在PLSQL中检查时间是否大于或小于另一个时间

来自分类Dev

如何在PLSQL中检查时间是否大于或小于另一个时间

来自分类Dev

如何还原旧的plsql?

来自分类Dev

生成一个.log文件plsql / oracle

来自分类Dev

在输出之后在 plsql 中写入一个块

来自分类Dev

将数字转换为天oracle plsql

来自分类Dev

plsql 函数 - 根据传递的数字返回

来自分类Dev

如何遍历Oracle PLSQL中的分隔列表

来自分类Dev

如何在PLSQL中释放游标?

来自分类Dev

如何在Oracle PLSQL中透视表?

来自分类Dev

如何遍历pg / PLSQL中的列列表?

来自分类Dev

如何在PLSQL中过滤json?

来自分类Dev

如何使用sql / plsql获取模式的用户

来自分类Dev

PLSQL-此素数代码如何工作?

来自分类Dev

我有一个字符串值,我需要检查 plsql 中值的格式

来自分类Dev

如何检查一个数字是否可以被列表中的每个数字整除

来自分类Dev

如何检查一个数字进入另一个数字内并在php中基于该数字创建一个数组?

来自分类Dev

我如何检查一个数字是高于还是低于另一个数字?

来自分类Dev

需要一个程序要求用户输入2个整数,检查第二个数字是否是第一个数字的倍数

来自分类Dev

如果用户只输入一个数字,我如何才能得到一个将其数字扩展为两个数字的输入文本?

来自分类Dev

输入一个数字,不是数字,请重试

来自分类Dev

PLSQL:使用截断填充数字和数字转换

来自分类Dev

如何一次读取多个值作为 PLSQL 中单个变量的输入?

来自分类Dev

使用PLSQL时,此SELECT语句中应有一个INTO子句

来自分类Dev

是否可以在PLSQL中循环以基于变量从一个表中检索多个结果?

来自分类Dev

将plsql嵌套表类型与另一个regaular sql表联接

来自分类Dev

如何选择一个数字?

来自分类Dev

Oracle SQL PLSQL大数字段奇怪的行为

Related 相关文章

  1. 1

    用PLSQL中的另一个数字替换日期中的日期部分

  2. 2

    如何在PLSQL中检查时间是否大于或小于另一个时间

  3. 3

    如何在PLSQL中检查时间是否大于或小于另一个时间

  4. 4

    如何还原旧的plsql?

  5. 5

    生成一个.log文件plsql / oracle

  6. 6

    在输出之后在 plsql 中写入一个块

  7. 7

    将数字转换为天oracle plsql

  8. 8

    plsql 函数 - 根据传递的数字返回

  9. 9

    如何遍历Oracle PLSQL中的分隔列表

  10. 10

    如何在PLSQL中释放游标?

  11. 11

    如何在Oracle PLSQL中透视表?

  12. 12

    如何遍历pg / PLSQL中的列列表?

  13. 13

    如何在PLSQL中过滤json?

  14. 14

    如何使用sql / plsql获取模式的用户

  15. 15

    PLSQL-此素数代码如何工作?

  16. 16

    我有一个字符串值,我需要检查 plsql 中值的格式

  17. 17

    如何检查一个数字是否可以被列表中的每个数字整除

  18. 18

    如何检查一个数字进入另一个数字内并在php中基于该数字创建一个数组?

  19. 19

    我如何检查一个数字是高于还是低于另一个数字?

  20. 20

    需要一个程序要求用户输入2个整数,检查第二个数字是否是第一个数字的倍数

  21. 21

    如果用户只输入一个数字,我如何才能得到一个将其数字扩展为两个数字的输入文本?

  22. 22

    输入一个数字,不是数字,请重试

  23. 23

    PLSQL:使用截断填充数字和数字转换

  24. 24

    如何一次读取多个值作为 PLSQL 中单个变量的输入?

  25. 25

    使用PLSQL时,此SELECT语句中应有一个INTO子句

  26. 26

    是否可以在PLSQL中循环以基于变量从一个表中检索多个结果?

  27. 27

    将plsql嵌套表类型与另一个regaular sql表联接

  28. 28

    如何选择一个数字?

  29. 29

    Oracle SQL PLSQL大数字段奇怪的行为

热门标签

归档