我用的是Oracle数据库,用Dbexpress控件连接数据库。在Delphi的SQLStoredProc中,已经设置了SqlConnection,可是在StoredProcName中的下拉列表中却没有存储过程可选,是存储过程写错了还是其他什么原因/?请帮忙看一下存储过程,顺便问一下如何在ORACLE中运行我的这个存储过程?
CREATE OR REPLACE PROCEDURE "CHENYONG"."GET_NEWGUESTID"
(returnid out varchar(14)) as
declare date1 datetime;
count1 int;--本存储过程用于获取新的客户ID SELECT @date1=chenyong.newguestid.date1,
@count1=chenyong.newguestid.count1
FROM chenyong.newguestid; if @@trancount=0
begin tran t1;
else
save tran t1;
if (datediff(dd,@date1,getdate())<>0) UPDATE chenyong.newguestid
SET count1 = 1, date1=getdate();
else
UPDATE chenyong.newguestid
SET count1 = @count1 + 1;
SELECT @date1=chenyong.newguestid.date1,
@count1=chenyong.newguestid.count1
FROM chenyong.newguestid;
set @returnid='A'+replace(str(DATEPART(yyyy, @date1),4),' ','0')+
replace(str(DATEPART(mm, @date1),2),' ','0')+
replace(str(DATEPART(dd, @date1),2),' ','0')+
replace(str(@count1,4),' ','0');
if @@error=0
begin
commit tran t1;
return 0
end
else
begin
rollback tran t1;
RAISERROR('生成客户登记号失败!', 1, 2);
return 1;
endGO
CREATE OR REPLACE PROCEDURE "CHENYONG"."GET_NEWGUESTID"
(returnid out varchar(14)) as
declare date1 datetime;
count1 int;--本存储过程用于获取新的客户ID SELECT @date1=chenyong.newguestid.date1,
@count1=chenyong.newguestid.count1
FROM chenyong.newguestid; if @@trancount=0
begin tran t1;
else
save tran t1;
if (datediff(dd,@date1,getdate())<>0) UPDATE chenyong.newguestid
SET count1 = 1, date1=getdate();
else
UPDATE chenyong.newguestid
SET count1 = @count1 + 1;
SELECT @date1=chenyong.newguestid.date1,
@count1=chenyong.newguestid.count1
FROM chenyong.newguestid;
set @returnid='A'+replace(str(DATEPART(yyyy, @date1),4),' ','0')+
replace(str(DATEPART(mm, @date1),2),' ','0')+
replace(str(DATEPART(dd, @date1),2),' ','0')+
replace(str(@count1,4),' ','0');
if @@error=0
begin
commit tran t1;
return 0
end
else
begin
rollback tran t1;
RAISERROR('生成客户登记号失败!', 1, 2);
return 1;
endGO
解决方案 »
- 大家帮我看看这个函数,内存越来越大!线程的
- 对文档直接操作问题
- 怎样找出程序中内存泄漏的地方?有没有相关软件可以监测?
- 怎么使用ole动态的创建autocad的对象?
- 请问运行DELPHI后生成的EXE文件可以拿到没有DELPHI环境下的机器上运行吗?
- 请教Delphi 6.0 中带有的 InstallShield Express 的使用方法
- 也是窗口,如何关闭中间层窗口让1,3层照样正常运行
- 初学delphi,请教两个小问题?
- 请问一下,句柄这个概念的详细解释。
- wyr.exe的wry.dll如何用,我想用他的ip地址的数据。
- 怎样将一个有货币型字段的DBF表导入到Access数据库中?
- 关于ADO的小问题
( returnid out varchar(14) ) as
date1 chenyong.new_guestid.date1%type;
count1 chenyong.new_guestid.count1%type;--本存储过程用于获取新的客户ID
begin
SELECT date1,count1 into date1,count1 FROM chenyong.new_guestid;
if date1!=(sysdate,`yyyymmdd`) then UPDATE chenyong.new_guestid
SET count1 = 1,date1=(sysdate,`yyyymmdd`);
else
UPDATE chenyong.new_guestid
SET count1 =count1 + 1;
SELECT date1, count1 into date1, count1
FROM chenyong.new_guestid;
end if
returnid:='A'||(concat((trunc(sysdate,`dd`),`yyyymmdd),replace(to_char(count1,4),' ','0')));
end;