数据库有表
A(A1,A2)
AA,AA
BB,BB
CC,CC
DD,DD
EE,EE
FF,FF
......如我有一存储过程,如下:ALTER PROCEDURE [dbo].[AAAAA]
@p varchar(50)=null
AS
BEGIN select * from Test5END
我想通过参数传递(@p)来补充完整SQL语句,如在 select * from Test5 的后面加上 where A1='CC'我想达到的效果是
不传参数时,就做 select * from Test5
传参数时,参数直接写入后半段语句,实际做的就是 select * from Test5 where A1='CC'我的问题是在存储过程中 @p 怎么放? 像这样:select * from Test5 @p 是不行的
查询分析器里这么写? 像这样: exec AAAAA ' where A1=''''CC''' (这里单引号好多,都搞不清了) ?????
A(A1,A2)
AA,AA
BB,BB
CC,CC
DD,DD
EE,EE
FF,FF
......如我有一存储过程,如下:ALTER PROCEDURE [dbo].[AAAAA]
@p varchar(50)=null
AS
BEGIN select * from Test5END
我想通过参数传递(@p)来补充完整SQL语句,如在 select * from Test5 的后面加上 where A1='CC'我想达到的效果是
不传参数时,就做 select * from Test5
传参数时,参数直接写入后半段语句,实际做的就是 select * from Test5 where A1='CC'我的问题是在存储过程中 @p 怎么放? 像这样:select * from Test5 @p 是不行的
查询分析器里这么写? 像这样: exec AAAAA ' where A1=''''CC''' (这里单引号好多,都搞不清了) ?????
解决方案 »
- sql server 2008 express不能启动,请高手看下错误日志
- 关于在查询结果集中使用select语句问题
- 如何在MS Sql Server 中实现Oracle 中的 for Update nowait 功能?
- 求一条关于二个DATETIME类型的时间差的SQL语句
- 从Excel往sqlserver导数据的问题
- 在jsp页面和数据库建立连接后,可以多次读取数据吗?
- 一个关于存储过程的超难问题(拼结sql字符串)注:sql server 200
- 请教vf问题:数值型转换成日期型的函数是哪个?如不能直接转换,应该怎样处理?很急!谢谢!
- Oracle 中有PL/SQL 相应地 SQL SERVER 7 中有什么呢?????
- 再sql server里面有没有一个象oracle里面的rowid和rowcount字段!或函数谢谢了
- sql数据库查询 语句
- 請教一段時間內的日期排列
@p varchar(50)=null
AS
BEGIN
declare @sql varchar(8000)
select @sql = 'select * from Test5'+ isnull(@p,'')
exec(@sql)END
@p varchar(50)=''
AS
BEGIN exec('select * from Test5 '+@p)END
@p varchar(50)=null
AS
BEGIN select * from Test5 where A1=@PEND
goexec aaaaa 'CC'
ALTER PROCEDURE [dbo].[AAAAA]
@p varchar(50)=null
AS
BEGIN exec ('select * from A '+@p)END
@p varchar(50)=null
AS
BEGIN
declare @sql varchar(8000)
set @sql='select * from Test5 '+@p
exec(@sql)
END
go
select @S = 'where x=''1'''
declare @sql varchar(8000)
select @sql ='select * from test '+@sexec(@sql)
@p varchar(50)=null
AS
BEGIN
declare @sql varchar(8000)
if @p is null
set @sql='select * from Test5 '
else
set @sql='' --这里根据需要去拼语句
exec(@sql)
END
go
假如参数@p传过来的是'CC'而不是 where A1='CC',那么ALTER PROCEDURE [dbo].[AAAAA]
@p varchar(50)=null
AS
BEGIN
select * from Test5 where A1=isnull(@p,A1)
END
go假如参数传过来是where A1='CC' ,那么最好就是用exec来执行动态语句了
是我弄错了 -_-!你那样传参数的话,好像没有exec以外的方法
ALTER PROCEDURE [dbo].[AAAAA]
@p varchar(50)=null
AS
BEGIN
declare @sql varchar(1000)
set @sql='select * from Test5'+@p
exec(@sql)
END