练习是:
在名为v_Guest_Count的包中创建一个公共变量 用数字自动初始化 来宾表中的客人。使用以下SQL: SELECT COUNT(*) 来自客人;
我试过这样但是不起作用:
create or replace PACKAGE BODY BEACHCOMBER IS
v_guest_count NUMBER;
BEGIN
SELECT COUNT (*) FROM A2_GUESTS
INTO v_guest_count;
END BEACHCOMBER;
谢谢
编辑:这是测试代码:
PROMPT
PROMPT TESTING: Initialisation of the v_Guest_Count variable. Expect 81.
BEGIN
DBMS_OUTPUT.PUT_LINE('v_Guest_Count has been initialised to: '||TO_CHAR(BEACHCOMBER.v_Guest_Count));
END;
答案 0 :(得分:-1)
你的PL / SQL有很多错误。我修改了下面的代码。
如果要从查询中返回标量结果,则需要在过程中使用OUT参数,或者创建一个函数来返回值。
“select into”的语法错误。
您无法在函数/过程之外访问本地范围的变量(v_guest_count)的值。
create or replace FUNCTION BEACHCOMBER_COUNT
RETURN NUMBER
IS
v_guest_count NUMBER;
BEGIN
SELECT COUNT (*) INTO v_guest_count
FROM dual; -- A2_GUESTS;
RETURN v_guest_count;
END;
PROMPT PROMPT TESTING: Initialisation of the v_Guest_Count variable. Expect 81.
BEGIN
DBMS_OUTPUT.PUT_LINE('v_Guest_Count has been initialised to: '||TO_CHAR(BEACHCOMBER_COUNT()));
END;
/
我建议你买一本好的pl / sql书。