我有一个表(客户),并且具有c_Id,fname,lname,age
的属性该表填充了以下值
1|Ann|Smiths|23
2|Chris|Gates|21
3|Janes|Jobs|24
我是pl / sql的新手,我写了一个简单的select语句
DECLEAR
name varchar2(50);
BEGIN
SELECT fname into name
FROM customer
WHERE fname= 'Ann';
END;
当我使用以下命令
从sqlplus上的文本文件(doselect)执行脚本时 EXECUTE doselect
然而它给了我以下错误
ERROR at line 1:
ORA-06550: line 1, column 8:
PLS-00103: Encountered the symbol ":" when expecting one of the following:
:= . ( @ % ;
请帮忙。
答案 0 :(得分:1)
除了错字(DECLEAR而不是DECLARE),你的脚本看起来很好。要从SQL / Plus获取输出,我还要添加DBMS_OUTPUT
语句:
DECLARE
name varchar2(50);
BEGIN
SELECT fname into name
FROM customer
WHERE fname= 'Ann';
-- print it
dbms_output.put_line(name);
END;
但是,要从SQL / Plus执行文件,请不要使用EXECUTE
命令 - 而是使用@
:
SQL> set serveroutput on
SQL> @doselect
10 /
Ann
SQL / Plus对新用户不是很友好 - 你可能想要使用另一个客户端来开始(例如Oracle SQL/Developer - 它是免费的,并带有一个漂亮的GUI)。
答案 1 :(得分:0)
DECLARE
name VARCHAR2 (50);
BEGIN
SELECT FNAME
INTO name
FROM customer
WHERE FNAME = 'Ann';
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('ERROR ' || SQLERRM);
END;
/
您的错误是在DECLEAR中 - > DECLARE,您必须使用/.
关闭脚本您应该始终插入一个用于异常处理的块。
答案 2 :(得分:0)
创建类型holding_TY
作为对象
(
d_id int not null,
foreign key(d_id)references device(d_id),
d_number number
)
创建类型holding_nt作为holding_TY
的表
CREATE TABLE bill (
bi_id int primary key,
c_id number not null,
foreign key(c_id) references customer(c_id),
bi_date date_TY,
holding holding_nt,
total_pri float
)
嵌套表存储为holding_nt_table