SQL Server:无法从查询分析器中找到带有句柄10的预准备语句

时间:2012-03-22 21:32:11

标签: sql sql-server

我运行SQL分析器并且我想在查询分析器中运行一些查询,但是我收到错误“SQL Server:找不到带有句柄x的预处理语句”。

有什么想法吗?

这是我从探查器中复制的SQL:

declare @p1 int
set @p1=10
exec sp_prepare @p1 output,N'@P0 int,@P1 nvarchar(4000),@P2 datetime,@P3 datetime,@P4 datetime,@P5 datetime,@P6 datetime,@P7 datetime',N'SELECT * FROM SCHEDULE WITH (NOLOCK) WHERE RoomNo= @P0  AND STATUS =  @P1   AND ( (EndTimeDT <=  @P2  AND EndTimeDT >  @P3 ) OR (StartTimeDT >=  @P4  AND StartTimeDT <  @P5 )  OR (StartTimeDT <=  @P6  AND EndTimeDT >  @P7 ) )',1
select @p1
go
exec sp_execute 10,19,N'A','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:00:00','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:30:00'
go

3 个答案:

答案 0 :(得分:12)

这是我的第二个答案,我在写第一个问题时误解了这个问题。

你为什么要做set @p1=10?你不应该设置这个变量。尝试删除它

答案 1 :(得分:10)

您应该使用不RPC:Starting

RPC:Completed个查询

在分析器中,您通常会看到RPC:StartingRPC:CompletedRPC:Staring中显示的语句是您需要选择的语句,RPC:Completed将包含未从客户端传递的输出值。

如果您使用RPC:Completed,则应移除SET set @p1=10要运行的查询

答案 2 :(得分:3)

如果您想在查询分析器中运行它,似乎需要修改探查器文本。

declare @p1 int
exec sp_prepare @p1 output,N'@P0 int,@P1 nvarchar(4000),@P2 datetime,@P3 datetime,@P4 datetime,@P5 datetime,@P6 datetime,@P7 datetime',N'SELECT * FROM SCHEDULE WITH (NOLOCK) WHERE RoomNo= @P0  AND STATUS =  @P1   AND ( (EndTimeDT <=  @P2  AND EndTimeDT >  @P3 ) OR (StartTimeDT >=  @P4  AND StartTimeDT <  @P5 )  OR (StartTimeDT <=  @P6  AND EndTimeDT >  @P7 ) )',1
select @p1
exec sp_execute @p1,19,N'A','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:00:00','2012-03-22 16:30:00','2012-03-22 16:00:00','2012-03-22 16:30:00'
go