在世界上向上迈进我开始迈向PL / SQL的第一步,我必须承认我完全迷失了。不幸的是,我读过的很多参考文献都没有帮助解决这个问题。
鉴于此,我想我会创建几个基本的表格来到这里寻找始终流动的伟大建议。通过查看示例和"分解"我似乎学得更好。它们在我的大脑中有意义。
那么,就此而言 - 有人可以告诉我如何开发一个匿名PL / SQL块来输出下表中的一些基本数据吗?让我们说输出应该显示客户购买夏普电视的销售总数。
以下是我创建的一些表格:
CREATE TABLE TVMAKES
(tvID INT PRIMARY KEY,
tvMake VARCHAR(20) NOT NULL,
tvModel VARCHAR(20) NOT NULL);
CREATE TABLE TVSALES
(saleID INT PRIMARY KEY,
tvID INT,
CONSTRAINT SALES_FK1 FOREIGN KEY (tvID) REFERENCES TVMAKES(tvID));
以下是填写表格的一些数据:
INSERT INTO TVMAKES (tvID,tvMake,tvModel) VALUES (1,'Sharp','50LCD');
INSERT INTO TVMAKES (tvID,tvMake,tvModel) VALUES (2,'Sony','20LCD');
INSERT INTO TVMAKES (tvID,tvMake,tvModel) VALUES (3,'Samsung','25LCD');
INSERT INTO TVMAKES (tvID,tvMake,tvModel) VALUES (4,'LG','58LCD');
INSERT INTO TVMAKES (tvID,tvMake,tvModel) VALUES (5,'Vizio','60LCD');
INSERT INTO TVMAKES (tvID,tvMake,tvModel) VALUES (6,'Sharp','30LCD');
INSERT INTO TVSALES (saleID,tvID) VALUES (1,1);
INSERT INTO TVSALES (saleID,tvID) VALUES (2,6);
INSERT INTO TVSALES (saleID,tvID) VALUES (3,2);
INSERT INTO TVSALES (saleID,tvID) VALUES (4,2);
INSERT INTO TVSALES (saleID,tvID) VALUES (5,3);
INSERT INTO TVSALES (saleID,tvID) VALUES (6,4);
INSERT INTO TVSALES (saleID,tvID) VALUES (7,5);
所以只是为了重新进行迭代,你能否请给我一个匿名PL / SQL块的例子,以返回tvMake是Sharp的TV的总销售额?我正在使用NOVA Oracle DB。我知道,通常不会直接过来"问"这里有一个解决方案,但是我试图学习PL / SQL并且真的不知道从哪里开始,所以有时候最好看一个我能够很容易理解的直接例子来获得基础知识。
提前致谢!
答案 0 :(得分:5)
declare
make integer;
total integer;
begin
select tvid into make from tvmakes where tvmake = 'Sharp';
select count(*) into total from tvsales where tvid = make;
dbms_output.put_line('We sold ' || total || ' Sharp TVs so far.');
end;
/
您不能只在plsql块中运行SQL语句 - 您需要使用它来执行SOMETHNG。在这种情况下,我们将声明2个局部整数,并用我们的2个查询的结果填充它们。
然后我们将使用DBMS_OUTPUT包发送包含我们工作结果的消息。
请注意,您的程序必须ASK才能获得DBMS_OUTPUT缓冲区的内容。在SQL * Plus / SQLcl / SQL Developer中,使用
最容易实现SET SERVEROUTPUT ON
如果你已经做到这一点,那就太棒了。
现在,如果您真的想学习PL / SQL - 并且您确信自己已经掌握了很好的SQL,那么请考虑我们在LiveSQL提供的资源。您可以从那里的课程/示例中学习和编写PL / SQL。