oracle procedure
我用delphi和oracle在开发时,遇到如下问题,向大家请教!]
CREATE PROCEDURE ADD_NEW (
p_id in integer,
p_name in char,
p_addr in char)
IS
begin
insert into test_table values(p_id,p_name,p_addr);
commit;
end add_new;
在sql plus中出现编译错误,why?
help me!20分送上
问题点数:22、回复次数:19Top
1 楼sdfh(闻香识女人)回复于 2001-07-10 17:41:51 得分 0
函数必须有return 子句,并且p_id类型应该为numberTop
2 楼sdfh(闻香识女人)回复于 2001-07-10 17:44:13 得分 0
sorry,看错了,过程不需要返回值。Top
3 楼sdfh(闻香识女人)回复于 2001-07-10 17:54:03 得分 0
呵呵,都不是以上的问题,看来你的表建得有问题。Top
4 楼ChinaCoo(china)回复于 2001-07-10 17:56:41 得分 0
SQL> create or replace add_new(
2 p_id in number,
3 p_name in char,
4 p_addr in char)
5 is
6 begin
7 insert into test_table(p_id,p_name,p_addr)
8 end;
create or replace add_new(
*
错误位于第1行:
ORA-00922: 缺少或无效选项Top
5 楼ChinaCoo(china)回复于 2001-07-10 18:00:18 得分 0
表会有什么问题呢?在DELPHI SQL EXPLORER下可添删数据,DELPHI下也可查询Top
6 楼dragonerfish(jimmyyu)回复于 2001-07-10 18:22:21 得分 0
查一下test_table的表结构.Top
7 楼guostong(笨驴)回复于 2001-07-10 18:23:05 得分 0
create or replace procedure add_new(
Top
8 楼guo(itpub.net)回复于 2001-07-10 18:57:17 得分 0
还是guostong,一眼就看出来了.Top
9 楼ChinaCoo(china)回复于 2001-07-11 09:15:49 得分 0
i'm sorry 上次写错啦
SQL> create or replace procedure add_new(
2 2 p_id in number,
3 3 p_name in char,
4 4 p_addr in char)
5 5 is
6 6 begin
7 7 insert into test_table(p_id,p_name,p_addr)
8 8 end;
9 /
警告:已创建的过程出现编译错误。Top
10 楼ChinaCoo(china)回复于 2001-07-11 09:27:03 得分 0
错误为(show error里):
8 2 PLS-00103: 出现"end"符号在下列需要时:
(selectvalues
Top
11 楼ChinaCoo(china)回复于 2001-07-11 09:28:02 得分 0
请各位大虾不吝赐教!先谢了!Top
12 楼michaelzhang(一个贫穷的农民,啥时候才能象城里人一样)回复于 2001-07-11 10:12:16 得分 0
这么简单的问题,这么多高手都没看出来!!!!!!
err1: 差values
err2: 结尾要";"
create or replace procedure add_new(
p_id in number,
p_name in char,
p_addr in char)
is
begin
insert into test_table values(p_id,p_name,p_addr);
end;
/
Top
13 楼sdfh(闻香识女人)回复于 2001-07-11 11:55:05 得分 0
肯定又是笔误,题目上的一段程序我运行过没问题,可能还是因为表的域跟插入语句不对应。Top
14 楼bjwan(bjwan)回复于 2001-07-11 13:17:47 得分 0
把test_table的表结构给出来看一看!Top
15 楼yzyun(AMANI NAKUPENDA~WE~)回复于 2001-07-11 13:43:27 得分 22
都什么年代了?还用CHAR呢?最好用varchar2
下面的如果错了,那么一定是见了鬼了!
create or replace procedure add_new(
p_id in number,
p_name in char,
p_addr in char)
is(或 as )
begin
insert into test_table values (p_id,p_name,p_addr);
end;
Top
16 楼ChinaCoo(china)回复于 2001-07-11 14:12:54 得分 0
CREATE TABLE LIUDZH.TEST_TABLE (
NAME VARCHAR2(16),
BIANHAO NUMBER(16, 0),
DWXZH VARCHAR2(16),
LXPZ NUMBER(16, 0),
SFBD VARCHAR2(16)
)
TABLESPACE USER_DATA
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
STORAGE (INITIAL 10240
NEXT 10240
MINEXTENTS 1
MAXEXTENTS 121
PCTINCREASE 50
FREELISTS 1
FREELIST GROUPS 1)Top
17 楼ChinaCoo(china)回复于 2001-07-11 14:18:04 得分 0
to yzyun 我试过啦,好像还有问题,谢过各位!
SQL> create or replace procedure add_new(
2 p_id in number,
3 p_name in varchar2,
4 p_addr in varchar2)
5 is
6 begin
7 insert into test_table(p_id,p_name,p_addr);
8 commit;
9 end;
10 /
警告:已创建的过程出现编译错误。Top
18 楼ChinaCoo(china)回复于 2001-07-11 14:22:44 得分 0
SQL> create or replace procedure add_new(
2 p_id in number,
3 p_name in varchar2,
4 p_addr in varchar2)
5 is
6 begin
7 insert into liu_table(p_id,p_name,p_addr);
8 commit;
9 end;
10 /
警告:已创建的过程出现编译错误。
表结构是这样:
CREATE TABLE LIUDZH.LIU_TABLE (
ID NUMBER(16, 0) NOT NULL,
NAME VARCHAR2(16),
ADDR VARCHAR2(40)
)
TABLESPACE USER_DATA
PCTFREE 10
PCTUSED 40
INITRANS 1
MAXTRANS 255
STORAGE (INITIAL 10240
NEXT 10240
MINEXTENTS 1
MAXEXTENTS 121
PCTINCREASE 50
FREELISTS 1
FREELIST GROUPS 1)Top
19 楼netwolf()回复于 2001-07-16 18:06:28 得分 0
又缺少values了,加上就通过了Top




