一个查询存储过程的问题(字段不定,条件运算不定) 参数是什么呢?把sql语句print出来看看 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 --如何将exec执行结果放入变量中? declare @num int, @sqls nvarchar(4000) set @sqls='select @a=count(*) from tableName ' exec sp_executesql @sqls,N'@a int output',@num output select @num --tryALTER PROCEDURE [dbo].[brandIDQurey](@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255))ASSET NOCOUNT ON;DECLARE @sqlString nvarchar(255)SET @sqlString = N'SELECT 存货表.* FROM 存货表 WHERE ([' + @columnName + ']' + @oper + '[' + @param + ']' + N' )'exec sp_executesql @sqlString, N'@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255)',@columnName,@oper,@param --找到了,楼主少了引号ALTER PROCEDURE [dbo].[brandIDQurey](@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255))ASSET NOCOUNT ON;DECLARE @sqlString nvarchar(255)SET @sqlString = N'SELECT * FROM 存货表 WHERE (' + @columnName + @oper +N''''+ @param + N''' )'exec sp_executesql @sqlString, N'@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255)',@columnName,@oper,@param 因为参数@param是字符型,所以要在两边加单引号,比如:--你的结果:...where column=abc--正确的结果:...where column='abc' CREATE TABLE 存货表(C1 VARCHAR(100),C2 VARCHAR(100),C3 VARCHAR(100))INSERT 存货表SELECT 'A', 'B', 'C'GOCREATE PROCEDURE [dbo].[brandIDQurey](@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255))ASSET NOCOUNT ON;DECLARE @sqlString nvarchar(255)SET @sqlString = N'SELECT * FROM 存货表 WHERE (' + @columnName + @oper +N''''+ @param + N''' )'exec sp_executesql @sqlString, N'@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255)',@columnName,@oper,@paramGOEXEC brandIDQurey 'C3','=','C'DROP PROC brandIDQureyDROP TABLE 存货表--结果/*C1 C2 C3-------------------------A B C*/ 昨晚已经解决了,不过还是要谢谢gc_ding(施主,给个妞泡好么) 这里有错误嘛? 如何查询系统存储过程的参数 关于数据库选出特定位置记录的问题 select嵌套查询问题 SQL 2005 用户架构删除问题,在线等等中!急 10w 火急!数据库误还原了,如何恢复。 关于SQLServer2005的查询效率问题 关于复合键 请问个困难问题----急 这个会是什么问题? 真金真银求SQL SERVER双机方案, ASP循环存储过程,提示“连接占线导致另一个 hstmt”
@sqls nvarchar(4000)
set @sqls='select @a=count(*) from tableName '
exec sp_executesql @sqls,N'@a int output',@num output
select @num
(
@columnName nvarchar(50),
@oper nvarchar(8),
@param nvarchar(255)
)
AS
SET NOCOUNT ON;
DECLARE @sqlString nvarchar(255)
SET @sqlString = N'SELECT 存货表.* FROM 存货表 WHERE ([' + @columnName + ']' + @oper + '[' + @param + ']' + N' )'
exec sp_executesql @sqlString, N'@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255)',@columnName,@oper,@param
ALTER PROCEDURE [dbo].[brandIDQurey]
(
@columnName nvarchar(50),
@oper nvarchar(8),
@param nvarchar(255)
)
AS
SET NOCOUNT ON;
DECLARE @sqlString nvarchar(255)
SET @sqlString = N'SELECT * FROM 存货表 WHERE (' + @columnName + @oper +N''''+ @param + N''' )'
exec sp_executesql @sqlString, N'@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255)',@columnName,@oper,@param
--你的结果:...where column=abc
--正确的结果:...where column='abc'
(
C1 VARCHAR(100),
C2 VARCHAR(100),
C3 VARCHAR(100)
)
INSERT 存货表
SELECT 'A', 'B', 'C'
GOCREATE PROCEDURE [dbo].[brandIDQurey]
(
@columnName nvarchar(50),
@oper nvarchar(8),
@param nvarchar(255)
)
AS
SET NOCOUNT ON;
DECLARE @sqlString nvarchar(255)
SET @sqlString = N'SELECT * FROM 存货表 WHERE (' + @columnName + @oper +N''''+ @param + N''' )'
exec sp_executesql @sqlString, N'@columnName nvarchar(50),@oper nvarchar(8),@param nvarchar(255)',@columnName,@oper,@param
GOEXEC brandIDQurey 'C3','=','C'DROP PROC brandIDQurey
DROP TABLE 存货表--结果
/*
C1 C2 C3
-------------------------
A B C
*/