读书人

请问两个存储过程的有关问题

发布时间: 2012-01-20 18:53:53 作者: rapoo

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

读书人网 >SQL Server

热点推荐