运行 sql 过程需要 exec 语句吗?

is exec statement needed to run sql procedure?

这是我创建的程序

     QUERY_EMP(EID IN  employees.employee_id%TYPE,JID OUT employees.job_id%TYPE,SAL OUT employees.salary%TYPE)
IS
BEGIN
    SELECT   JOB_ID,SALARY
    INTO       JID,SAL
    FROM     employees
    WHERE   employee_id = EID;
COMMIT;
END;

如果我 运行 使用以下程序:

    emp_id      employees.employee_id%TYPE; 
    emp_salary  employees.salary%TYPE; 
    emp_job_id  employees.job_id%TYPE; 
begin    
emp_id := 103; 
QUERY_EMP(emp_id,emp_job_id,emp_salary); 
dbms_output.put_line('For: ' || emp_id ); 
dbms_output.put_line('Salary: ' || emp_salary); 
dbms_output.put_line('Job Id: ' || emp_job_id); 
end;

我收到以下错误 encountered exec query instead of symbols =@:(%

但是如果我 运行 没有在程序之前写 exec 它 运行s。那么为什么这里不需要exec命令,这里的begin和end有什么用呢?

'exec'(或'execute')是一个sqlplus命令。它用于告诉sqlplus要求服务器执行给定的程序。您正在使用 PL/SQL 块,并且 pl/sql 中没有 'exec' 命令。 PL/SQL 是否有'execute immediate'命令,用于执行动态sql,但'execute'和'execute immediate'不一样东西。