请教两个存储过程的问题
今天初学存储过程,尝试自己写了一个: 
 ALTER   PROCEDURE   dbo.InsertLog    
 	( 
 	@ThreadNo   int, 
 	@Keyword   nvarchar(50), 
 	@StartTime   datetime, 
 	@SearchEngine   nvarchar(50) 
 	) 
 AS 
 Insert   into   SearchLog(ThreadNo,Keyword,StartTime,SearchEngine)   values(@ThreadNo,@Keyword,@StartTime,@SearchEngine) 
 	RETURN   @@error 
 问题如下: 
 1.表SearchLog中有个标识字段ID,我想在插入记录成功后返回新记录ID字段的值,若插入操作不成功则返回0,不知如何实现? 
 2.要进行操作的表能否通过参数传入?即是说我要将记录插入到哪个表是不确定的,它通过参数传进来。 
 希望前辈高人不吝赐教。
------解决方案--------------------create PROCEDURE dbo.InsertLog  
 	( 
 	@ThreadNo int, 
 	@Keyword nvarchar(50), 
 	@StartTime datetime, 
 	@SearchEngine nvarchar(50) 
 	) 
 AS 
 Insert into SearchLog(ThreadNo,Keyword,StartTime,SearchEngine) values(@ThreadNo,@Keyword,@StartTime,@SearchEngine) 
 	RETURN @@identity   
 可以啊,但是要用动态sql   
 exec(); 
 sp_executesql   
------解决方案--------------------1、 
 判断一下@@error 的值 
 if @@error=0 
     return @@identity 
 else 
     return 0 
 2、 
 create procedure test 
 @table varchar(20), 
 @col1 varchar(10) 
 as 
 declare @sql varchar(1000) 
 set @sql= "insert into  "+@table+ "(col1)values( ' "+@col1+ " ') " 
 exec(@sql) 
 GO