我现在要建一个SP,内容是插入记录,表名是动态的,想从参与传入,参数表如下@表名 nvarchar(40),
@标识 uniqueidentifier,
@线程编号 varchar(10),
@设备编号 varchar(10),
@日志时间秒 datetime,
@日志时间毫秒 int,
@日志类型 nvarchar(20),
@日志位置 nvarchar(100),
@日志标题 nvarchar(100),
@日志内容 ntext想请教这个SP怎么写,因为动态表名,又是GUID的,拼接不好用,提示不能ADD操作不支持GUID和日期期
另外想请教一下,这个SP写成后,如果我在程序里多线程需要非常频繁的插入,我的代码怎么写比较好,.NET程序。
能达到每秒200条插入的.NET程序怎么写比较好,谢谢。
@标识 uniqueidentifier,
@线程编号 varchar(10),
@设备编号 varchar(10),
@日志时间秒 datetime,
@日志时间毫秒 int,
@日志类型 nvarchar(20),
@日志位置 nvarchar(100),
@日志标题 nvarchar(100),
@日志内容 ntext想请教这个SP怎么写,因为动态表名,又是GUID的,拼接不好用,提示不能ADD操作不支持GUID和日期期
另外想请教一下,这个SP写成后,如果我在程序里多线程需要非常频繁的插入,我的代码怎么写比较好,.NET程序。
能达到每秒200条插入的.NET程序怎么写比较好,谢谢。
那你以后怎么引用表?
如果不是GUID,拼语句动态执行就行了.
如果表名不多,可以用 if else 选几个语句分别单独执行,而不用动态.
create procedure insertintotb
(
@表名 nvarchar(40),
@标识 uniqueidentifier,
@线程编号 varchar(10),
@设备编号 varchar(10),
@日志时间秒 datetime,
@日志时间毫秒 int,
@日志类型 nvarchar(20),
@日志位置 nvarchar(100),
@日志标题 nvarchar(100),
@日志内容 ntext
)
as
begin
declare @sql nvarchar(max)
set @sql='insert into '+@表名+' select '''+@标识+''','''+@线程编号+''','''+@设备编号+''','''+@日志时间秒+''','
+ltrim(@日志时间毫秒)+','''+@日志类型+''','''+@日志位置+''','''+@日志标题+''','''+@日志内容+''''
exec(@sql)
end
这会大哥,我一会到公司试一下。不过还想请教个问题,如果是这样我在.NET调用时,直接用cmd类来执行SP,这个效率和我在程序里执行拼接的SQL有明显提高吗。因为我每秒需要达到200次插入以上,想了解一下情能方面的情况。
这位高手,SP是指Stored procedure,呵呵
另外请教,如果表名是动态的,那用这种在SP中拼接式的SQL和直接SQL语句两个,效率两种好呢,或是有其它高效的办法