我需要检查一些记录,不想每次都重新输入ID值,所以我想我应该使用一个简单的参数作为值。 PL/SQL 开发人员不断给出错误并说我需要使用
INTO
子句。
以前关于这个同样问题的问题没有帮助,我想知道我们是否不能像 MSSQL 中那样使用参数来简化简单的查询不在存储过程中。
我尝试查询并收到错误:
DECLARE
P_COMPANYID INT;
BEGIN
P_COMPANYID := 1935;
SELECT * FROM COMPANY_SHAREHOLDER CS WHERE CS.ID_COMPANY = P_COMPANYID;
END;
有没有办法在没有额外变量定义的情况下避免使用 INTO ?
在 pl/sql 中,不可能“只做一个选择”。目前尚不清楚你想做什么,但你可以使用“CURSOR FOR LOOP”。在这种情况下,您不需要显式定义变量,也不需要 SELECT INTO。
DECLARE
P_COMPANYID INT;
BEGIN
P_COMPANYID := 1935;
FOR r IN (SELECT * FROM COMPANY_SHAREHOLDER CS WHERE CS.ID_COMPANY = P_COMPANYID
) LOOP
<check what you want to check here>
END LOOP;
END;
或者 EMP 样本数据表上的示例:
set serveroutput on size 999999
DECLARE
BEGIN
FOR r IN (SELECT * FROM emp WHERE ename = 'KING') LOOP
IF r.job = 'PRESIDENT' THEN
dbms_output.put_line('he is the boss!');
END IF;
END LOOP;
END;
he is the boss!
PL/SQL procedure successfully completed.