PLSQL-如何检查和输入是一个数字
如何更改此代码以检查团队ID和输入是否为数字? 如果是-打开光标,如果不是,请打印一个数字PLSQL-如何检查和输入是一个数字,plsql,sqlplus,Plsql,Sqlplus,如何更改此代码以检查团队ID和输入是否为数字? 如果是-打开光标,如果不是,请打印一个数字 最小值为1,最大值为团队ID的最大数量?还是仅仅是一个数字 要处理替换变量,您需要将它们括在引号中,并将它们视为字符串 例如,这可能是一种做您需要的事情的方法: DECLARE TEAM_ID NUMBER := &INPUT; CURSOR C_WORKER IS SELECT FIRST_NAME, LAST_NAME FROM EMPLOYEES WHERE DEPART
最小值为1,最大值为团队ID的最大数量?还是仅仅是一个数字 要处理替换变量,您需要将它们括在引号中,并将它们视为字符串 例如,这可能是一种做您需要的事情的方法:
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;
您接受哪种类型的数字,以及采用哪种格式?例如,带有千位分隔符的数字是否有效?还有一个否定的。。。请尝试更好地定义您需要的支票以获得一些help@Aleksej我编辑这篇文章。好吗?还不清楚“1000”是否应该算作数字。
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;
/