日期:2014-05-18  浏览次数:20508 次

请教存储过程和函数的思路
对数据库中的一个表,我要从另一个表中Select多行出来Insert进来,
本来只用一个语句就可以了,
Insert   Into   Table1(...)
              (Select   ...   From   Table2   Where   )

但是现在,对Table2   Select出来的某一列需要作一些较为复杂的计算,
并且这个计算中要对另一个表Table3进行Update;
本来,如果没有Update语句,直接写一个函数就可以了.
但现在真不知道怎么办?


请教了.等待中...

------解决方案--------------------
中间可以用临时表转换...
------解决方案--------------------
用存储过程实现
------解决方案--------------------
先对table2进行计算结果存在临时表了,到时插入时从临时表中取.
------解决方案--------------------
存储过程吧
------解决方案--------------------
建议:
在table3上创建update触发器,这样就可以不用在这里加入相应的update代码了。
------解决方案--------------------
分成两次update不行吗?

第一次计算table2,update table3
第二次再重新计算table2,或者从table3读,update table1。

何必写成函数?
调用越复杂越慢。。。。
------解决方案--------------------
写成存储过程,函数中不能执行UPDATE操作
------解决方案--------------------
do fun1 with 'table1.dbf ', 'table2.dbf ', 'table3.dbf '

FUNCTION fun1(table1,table2,table3)
select * from &table2 into table temp

....对临时表temp的处理....

Insert Into &Table1(...) (Select ... From temp Where )

update &teble3 set ......=...... where.....
ENDFUNC
------解决方案--------------------
數據庫也用上了OOP的特點了
------解决方案--------------------
頂啊,同時更新大批數據會不會引起死鎖啊?