开发一个mis,打算在sqlserver和oracle上都可以运行。老板的意思是不到非用不可,比如网络传输量太大。不要写存储过程,不要视图,不要触发器等东西。我

  • 主题发起人 shangshang
  • 开始时间
S

shangshang

Unregistered / Unconfirmed
GUEST, unregistred user!
开发一个mis,打算在sqlserver和oracle上都可以运行。老板的意思是不到非用不可,比如网络传输量太大。不要写存储过程,不要视图,不要触发器等东西。我想为两种数据库各写一套存储过程,触发器和视图可以不要。各位评价一下,那种方法合适些。 (100分)<br />我还是觉的不大可能不写。大家看呢。
 
你有中文的语法问题,“老板的意思是不到必须不可”,不太懂。
我觉得如果老板没说要你写来干吗?浪费。闲着没事做也不是这么浪费的。
 
应该可能。

有公司来我们这儿推销过软件,说后台可以是SYBASE,可以是ORACAL,可以是SQL SERVER,
操作系统可以是UNIX,可以是NT,可以是LINUX。前台都是98。
他说可以根据用户需求和资金自选。

具体怎么做到就不知道了。
 
标题已经修改.
 
我觉得存储过程不如触发器和视图必要!
 
全部用标准sql语句,不然的建立不同的版本,如果是大型的MIS,建议建立不同版本的存储过程
 
你用ERWIN软件设计表、触发器和视图,他会支持 各种库。
存储过程,避免用一些特别的东西,应该是可以通过的吧。
 
有人这样做过吗?
能不能说出怎么样做更方便合理些。
 
我现在也被逼着这样做,原来数据库是SQL Server,现在要改成oracle,我原来写了十
几个存储过程,现在要重写,真是痛苦,因为oracle没有接触过,一个星期里赶出来,
好像不太可能。下面是我在SQL Serber中写的存储过程,请高手指点在oracle中怎么写。
--添加图片
DROP PROC PM_ApendPicProc
GO
CREATE PROC PM_ApendPicProc @iInfoID bigint,@sImage image--,@iPicID bigint OUTPUT
AS
INSERT INTO YW_Pic(PicInfo) VALUES (@sImage)
--SET @iPicID=@@IDENTITY
UPDATE YW_Info
SET PicID=@@IDENTITY
WHERE InfoID=@iInfoID
GO

--按电话号码查询
DROP PROC CX_InfoPhoneProc
GO
CREATE PROC CX_InfoPhoneProc @cPhoneCode varchar(8)
AS
SELECT *
FROM YW_Info
WHERE (PicID>0) and (PhoneCode Like '%'+@cPhoneCode+'%')
GO
 
试试这样:
多用标准的SQL语句;数据库中加入汇总的结果集;汇总在前台进行;
用Case对用的DB进行判断,写不同的SQL语句。
 
大家有力的出力,帮忙up一下啊。
 
你老板的观点是对的, 考虑到可移植性的问题, 尽量不要用存储过程,触发器等和
数据库相关的解决手段, 尤其是触发器, 尽量不要用, 业务逻辑可以由应用层来实现
你的方案可行, 但不太好...
 
学习中。。。
 
I'd rather keep on using stored procedure. Have a look at:
http://databases.about.com/library/weekly/aa042201a.htm
 
不用procedure/trigger,那用rdb干什么!
 
我还是觉得重写一套存储过程来的合适,仅仅是翻译一下而已,工作量一般不算很大。
再说利用数据库管理系统本身的功能完全应该啊。要不我用它们岂不是没什么好处吗。
 
后台数据库的操作系统可以不用考虑,所要考虑的只是前台与数据库的连接。
以前用SQL SERVER时,我们就自己做了一个ADO CONNECTION界面,可以连接不同的数据库。
选择好数据库以后,在前台执创建存储过程的操作。
所以,建议你还是做两套存储过程。但是不要用触发器和视图。因为ORACLE和SQL SERVER的这两个东东有很大的区别。
 
如果你要考虑在不同的数据库上移植,则最好不要写什么触发器和存储过程.
把应用逻辑放到组建上是最好的办法.
至于用哪种组建模型就看你的特长了.
 
这种东西最好做成两个版本,很多功能Oracle和SQL Server实现方法不一样,到时候不可
避免的会发生“冲突”!而且做成两个版本可以更好的发挥每种数据库的性能!
 
多谢帮忙,继续研究中....
 
顶部