我有一个长度为1,44,000的字符串,必须作为参数传递给存储过程,该存储过程是表上的选择查询.当这是一个查询(在c#中)它的工作正常.但是,当我将它作为参数传递给存储过程时,它无法正常工作.
这是我的存储过程,其中我已将此参数声明为NVARCHAR(MAX)
------------------------------------------------------
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
go
CREATE PROCEDURE [dbo].[ReadItemData](@ItemNames NVARCHAR(MAX),@TimeStamp as DATETIME)
AS
select * from ItemData
where ItemName in (@ItemNames) AND TimeStamp=@TimeStamp
---------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
这里的参数@ItemNames是一个用不同名称连接的字符串,例如'Item1','Item2','Item3'....等等.
谁能告诉我这里出了什么问题?
感谢和问候
帕德玛
我试图在Silverlight客户端应用程序中捕获来自WCF服务的常规异常.为此,我已经在我的WCF服务中包含了相应的更改,如本MSDN文章中所述.
但是,当我配置行为扩展并在端点行为中使用相同的行为时,上面提到的错误即将发生,并且由于此错误,服务无法运行.
我在这里配置我的配置.请建议我该如何解决这个问题?
<extensions>
<!--Add a behavior extension within the service model-->
<!-- Here SilverlightFaultBehavior is a class in AppServiceLib namespace -->
<behaviorExtensions>
<add name="myFaultExtension"
type="AppServiceLib.SilverlightFaultBehavior,AppServiceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"/>
</behaviorExtensions>
</extensions>
<endpointBehaviors>
<behavior name="myFaultBehavior">
<**myFaultExtension**/>
</behavior>
</endpointBehaviors>
Run Code Online (Sandbox Code Playgroud) 我们需要从 C# .Net 代码将 2000 条记录插入 SQL DB。为此,有什么方法可以一次插入所有 2000 条记录,而不是对每条记录执行 INSERT 查询。另外,这样做会对性能产生什么影响?
我需要从c#.net代码中匹配时间戳的表中选择记录2000.例如:
SELECT *
FROM ITEMDATA_TABLE
WHERE ITEMNAME='Item1' and TimeStamp='2010-04-26 17:15:05.667'
Run Code Online (Sandbox Code Playgroud)
上述查询必须针对相同的时间戳执行2000个以上的项目.
为此,我们可以使用
SELECT *
FROM ITEMDATA_TABLE
WHERE ITEMNAME in ('Item1','Item2','Item3','Item4',......)
AND TimeStamp='2010-04-26 17:15:05.667'
Run Code Online (Sandbox Code Playgroud)
来自SQL Server Management Studio.
我已经尝试将所有Item名称附加到一个字符串变量并将其作为参数提供给存储过程,但是它导致了错误的连接.
我怎么能这样做作为从.net代码执行的存储过程?谁能建议我/纠正我这样做?