在sql server 2008命令行中执行带输入参数(条件查询)的存储过程,该怎么解决
在sql server 2008命令行中执行带输入参数(条件查询)的存储过程
我在sql server 2008中创建了一个存储过程如下:USE [hyManage]
GO
/****** Object: StoredProcedure [dbo].[Proc_saleTotle] Script Date: 12/08/2014 11:00:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Proc_saleTotle]
(@strWhere nvarchar(1500)) --条件
AS
BEGIN
select count(ID) totalNum,Province from T_SalesClient
where 1=1 and Status=1 and HisStatus=1
-- and ClientName='上海'
+@strWhere
group by Province
END
其中输入参数@strWhere,我想在调用的时候输入条件查询,如and ClientName='上海',用
exec Proc_saleTotle @strWhere='and ClientName=上海';时出现错误,消息 245,级别 16,状态 1,过程 Proc_saleTotle,第 5 行
在将 nvarchar 值 'and ClientName=上海' 转换成数据类型 int 时失败。
语句
------解决思路----------------------
ClientName是int类型的?
------解决思路----------------------
------解决思路----------------------
这是动态脚本,你可以将@sql print出来看看就知道啦
我在sql server 2008中创建了一个存储过程如下:USE [hyManage]
GO
/****** Object: StoredProcedure [dbo].[Proc_saleTotle] Script Date: 12/08/2014 11:00:36 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER proc [dbo].[Proc_saleTotle]
(@strWhere nvarchar(1500)) --条件
AS
BEGIN
select count(ID) totalNum,Province from T_SalesClient
where 1=1 and Status=1 and HisStatus=1
-- and ClientName='上海'
+@strWhere
group by Province
END
其中输入参数@strWhere,我想在调用的时候输入条件查询,如and ClientName='上海',用
exec Proc_saleTotle @strWhere='and ClientName=上海';时出现错误,消息 245,级别 16,状态 1,过程 Proc_saleTotle,第 5 行
在将 nvarchar 值 'and ClientName=上海' 转换成数据类型 int 时失败。
语句
------解决思路----------------------
ClientName是int类型的?
------解决思路----------------------
ALTER proc [dbo].[Proc_saleTotle]
(@strWhere nvarchar(1500)) --条件
AS
BEGIN
DECLARE @sql varchar(max)
SET @sql = 'select count(ID) totalNum,Province from T_SalesClient
where 1=1 and Status=1 and HisStatus=1
'+@strWhere+'
group by Province'
EXEC(@sql)
END
------解决思路----------------------
这是动态脚本,你可以将@sql print出来看看就知道啦