Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Oracle 控制结构(如果/否则)_Oracle_Variables_If Statement_Sqlplus - Fatal编程技术网

Oracle 控制结构(如果/否则)

Oracle 控制结构(如果/否则),oracle,variables,if-statement,sqlplus,Oracle,Variables,If Statement,Sqlplus,我试图创建plsql块,但它不起作用。甲骨文说我在第2行有错误。我想这可能是因为替换变量的位置不对 DECLARE V_ENAME EMPLOYEES.LAST_NAME%TYPE := '&LNAME'; V_SAL EMPLOYEES.SALARY%TYPE; BEGIN SELECT LAST_NAME, SALARY INTO V_ENAME, V_SAL FROM employees WHERE LAST_NAME = V_ENAME; IF V_SAL < 3000 T

我试图创建plsql块,但它不起作用。甲骨文说我在第2行有错误。我想这可能是因为替换变量的位置不对

DECLARE
V_ENAME EMPLOYEES.LAST_NAME%TYPE := '&LNAME';
V_SAL EMPLOYEES.SALARY%TYPE;
BEGIN
SELECT LAST_NAME, SALARY
INTO V_ENAME, V_SAL
FROM employees WHERE LAST_NAME = V_ENAME;
IF V_SAL < 3000 THEN
v_sal := v_sal + 500;
DBMS_OUTPUT.PUT_LINE (v_ename || 'have increasement ');
ELSIF V_SAL > 3000 THEN
DBMS_OUTPUT.PUT_LINE (v_ename || 'do not have increasement ');
ELSE
DBMS_OUTPUT.PUT_LINE ('error');
END IF;
END;

不确定这是否是您的问题,但当您已经在where子句中确保last_name等于v_ename时,确实不需要在v_ename中选择last_name。

由于可能有许多员工的姓氏由用户传递,因此您可以使用隐式游标进行循环。此外,为了清晰起见,在输出中添加first_name

DECLARE
     v_ename employees.last_name%TYPE := '&LNAME';
     v_sal employees.salary%TYPE;
BEGIN

for rec IN ( SELECT first_name,last_name,salary
    FROM employees WHERE last_name = v_ename
) 
 LOOP

   IF rec.salary < 3000 THEN
     v_sal := rec.salary + 500;
     dbms_output.put_line (rec.first_name||' '||rec.last_name ||  
                         ' has an increase');
   ELSIF rec.salary  > 3000  THEN 
     dbms_output.put_line (rec.first_name||' '||rec.last_name || 
                         ' does not have an increase ');

   ELSE dbms_output.put_line ('error');
  END IF;
 END LOOP;
END;
/

谢谢,但它不起作用。。。它还显示在第51行未找到的数据。我必须声明变量V_SAL以保存员工的工资;2.员工的姓氏必须保存到替换变量中;3.当我们输入员工的姓氏时,其工资必须保存到V_SAL中@诺南:不客气。如果你发现答案是有用的,考虑它,它也会帮助别人。
..
old:DECLARE
     v_ename employees.last_name%TYPE := '&LNAME';
..
new:DECLARE
     v_ename employees.last_name%TYPE := 'Grant';

..


Douglas Grant has an increase
Kimberely Grant does not have an increase 


PL/SQL procedure successfully completed.