ALTER PROCEDURE [dbo].[test]
@c_id int,
AS
BEGIN
SELECT * FROM aaa WHERE bbb=222 and ccc=333
END要求当@c_id=0时 SELECT 为SELECT * FROM aaa WHERE bbb=222 and ccc=333 ,当大于0时为 SELECT * FROM aaa WHERE bbb=222 and ddd=444 and fff=555;要求用“DECLARE @cwhere varchar(250) ”变量来进行赋值
解决方案 »
- SQL SVERVER 2008 查询编辑器中的IntelliSense功能不能用了
- sql2000数据库 log文件太大了!
- 请教查询问题
- Active Temp Tables 数值巨大如何处理?
- SQL 游标问题
- 请问一个数据库中的实例有多个数据库,数据库可以相应对应不同的服务器不??
- 请触发器高手给一点意见,关于自动删除过期数据的问题。
- ~~~@@@ 开发一个汽修汽配软件,大家能否给点建议,来者有分,不够再开。谢谢!
- 后缀名为.sql的文件如何导入到SQL SERVER中(在线等)
- 请问:如何在server 2000中添加用户及权限。
- 在前台进行查询时,可不可以知道后台SQL要运行的语句或存储过程!高手赐教
- 将查询结果写入新的表
ALTER PROCEDURE [dbo].[test]
@c_id int,
AS
BEGIN
if @c_id=0
SELECT * FROM aaa WHERE bbb=222 and ccc=333
if @c_id>0
SELECT * FROM aaa WHERE bbb=222 and ddd=444 and fff=555END
ALTER PROCEDURE [dbo].[test]
@c_id int,
AS
DECLARE @cwhere varchar(250)
if @c_id>0
SET @cwhere = 'bbb=222 and ddd=444 and fff=555'
if @c_id=0
SET @cwhere='bbb=222 and ccc=333 '
BEGIN
SELECT * FROM aaa WHERE @cwhereEND要求这样,但好像不行。
@c_id int
AS
DECLARE @cwhere varchar(250)
if @c_id>0
SET @cwhere = 'bbb=222 and ddd=444 and fff=555'
if @c_id=0
SET @cwhere='bbb=222 and ccc=333 '
BEGIN----*************************************
exec('SELECT * FROM aaa WHERE '+ @cwhere)END
@c_id int,
AS
DECLARE @cwhere varchar(250)
if @c_id>0
begin
SET @cwhere = 'bbb=222 and ddd=444 and fff=555'
exec('SELECT * FROM aaa WHERE '+@cwhere)
end
else if @c_id=0
begin
SET @cwhere='bbb=222 and ccc=333 '
exec('SELECT * FROM aaa WHERE '+@cwhere)
end
BEGIN ……END之间有“;WITH Liang AS(……)”用加上IF或exec会出错
@c_id int,
AS
DECLARE @cwhere varchar(250)
DECLARE @sql varchar(250)
if @c_id>0
begin
SET @cwhere = 'bbb=222 and ddd=444 and fff=555'
if @c_id=0
begin
SET @cwhere='bbb=222 and ccc=333 '
end
SET @sql = ('SELECT * FROM aaa WHERE '+@cwhere )
execute sp_executesql @sql
END