请教两个存储过程的问题
今天初学存储过程,尝试自己写了一个:
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