请教存储过程和函数的思路
对数据库中的一个表,我要从另一个表中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的特點了
------解决方案--------------------頂啊,同時更新大批數據會不會引起死鎖啊?