PLSQL中请求中的两个或多个计算
我尝试进行两次转换,并在存储过程中返回值。 这是我的桌子:PLSQL中请求中的两个或多个计算,plsql,count,sum,Plsql,Count,Sum,我尝试进行两次转换,并在存储过程中返回值。 这是我的桌子: CREATE TABLE T_TEST (TEST NUMERIC(10) ) ; INSERT INTO T_TEST VALUES (1) ; INSERT INTO T_TEST VALUES (2) ; INSERT INTO T_TEST VALUES (3) ; 这项工作: DECLARE vSUM NUMERIC(10) ; vCOUNT NUMERIC(10) ; BEGIN SELECT SUM(TEST
CREATE TABLE T_TEST (TEST NUMERIC(10) ) ;
INSERT INTO T_TEST VALUES (1) ;
INSERT INTO T_TEST VALUES (2) ;
INSERT INTO T_TEST VALUES (3) ;
这项工作:
DECLARE
vSUM NUMERIC(10) ;
vCOUNT NUMERIC(10) ;
BEGIN
SELECT SUM(TEST) AS SUM INTO vSUM FROM T_TEST ;
DBMS_OUTPUT.PUT_LINE(vSUM) ;
END;
在sp之外,这是可行的
SELECT SUM(TEST) AS SUM , COUNT(TEST) AS NB FROM T_TEST ;
但这并不是:
DECLARE
vSUM NUMERIC(10) ;
vCOUNT NUMERIC(10) ;
BEGIN
SELECT
SUM(TEST) AS SUM INTO vSUM,
COUNT(TEST) AS NB INTO vCOUNT
FROM T_TEST ;
DBMS_OUTPUT.PUT_LINE(vSUM) ;
DBMS_OUTPUT.PUT_LINE(vCOUNT) ;
END;
我相信你的语法有点错误。请尝试以下操作:
DECLARE
vSUM NUMERIC(10);
vCOUNT NUMERIC(10);
BEGIN
SELECT SUM(TEST), COUNT(TEST) -- SELECT and INTO lists should appear
INTO vSUM, vCOUNT -- grouped together separately
FROM T_TEST;
DBMS_OUTPUT.PUT_LINE(vSUM);
DBMS_OUTPUT.PUT_LINE(vCOUNT);
END;
我相信你的语法有点错误。请尝试以下操作:
DECLARE
vSUM NUMERIC(10);
vCOUNT NUMERIC(10);
BEGIN
SELECT SUM(TEST), COUNT(TEST) -- SELECT and INTO lists should appear
INTO vSUM, vCOUNT -- grouped together separately
FROM T_TEST;
DBMS_OUTPUT.PUT_LINE(vSUM);
DBMS_OUTPUT.PUT_LINE(vCOUNT);
END;
您还可以避免使用以下变量声明:
BEGIN
for x in (
SELECT
SUM(TEST) sum_o_test
, COUNT(1) count_o_test
FROM T_TEST
) loop
DBMS_OUTPUT.PUT_LINE('sum_o_test:' ||x.sum_o_test);
DBMS_OUTPUT.PUT_LINE('count_o_test:'||x.count_o_test);
end loop;
END;
您还可以避免使用以下变量声明:
BEGIN
for x in (
SELECT
SUM(TEST) sum_o_test
, COUNT(1) count_o_test
FROM T_TEST
) loop
DBMS_OUTPUT.PUT_LINE('sum_o_test:' ||x.sum_o_test);
DBMS_OUTPUT.PUT_LINE('count_o_test:'||x.count_o_test);
end loop;
END;