运行 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'不一样东西。
这是我创建的程序
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'不一样东西。