我现在写的是
CREATE PROCEDURE SZ @tmStart int,@tmEnd int
AS
begin
SELECT 年,* from SC WHERE @tmStart<=年 and @tmEnd >= 年
END
GO
这样我每次都要写两个参数进行执行查询,
那么当我输入一个参数的时候就把当年的查找出来,输入两个的时候就把这个范围的找出来
就是输入一个参数也能查询,两个也能查询,最少一个条件
应该怎么弄呢
CREATE PROCEDURE SZ @tmStart int,@tmEnd int
AS
begin
SELECT 年,* from SC WHERE @tmStart<=年 and @tmEnd >= 年
END
GO
这样我每次都要写两个参数进行执行查询,
那么当我输入一个参数的时候就把当年的查找出来,输入两个的时候就把这个范围的找出来
就是输入一个参数也能查询,两个也能查询,最少一个条件
应该怎么弄呢
解决方案 »
- SQL 删除问题
- 想到个sql。。不知道咋写。。。。
- 高手帮忙:在无法确定字段数目情况下如何将多行数据合并为一行
- 在SQL中怎样比较一段时间?
- SQL Server 2000 内网连接成功,外网连接不通??
- "不能为新插入的行确定标识" 什么错误??? -急=在线等
- 求救:VB2005连接MSSQL2000查询时返回列名无效!
- 100分求解决办法~!(SQLServer通过ODBC连接MySQL导数据)
- 更新语句无相应,为何?updateblob bylx set bywj = :lb_bywj where bybh = :li_bybh using sqlca;
- 请教SQL SERVER 复制问题!
- datetime列默认可以为空,为什么插入空值后是1900?
- 本机自连sql server2k,怎么提示sql server不存在?
AS
begin
SELECT 年,* from SC WHERE @tmStart<=年 and @tmEnd >= 年
END
GO
如create proc test
@a int=0,
@b int=0
AS
...
@tmStart INT,
@tmEnd INT
AS
BEGIN
IF @tmStart+@tmEnd IS NOT NULL
SELECT 年,*
FROM SC
WHERE @tmStart<= 年
AND @tmEnd>= 年
ELSE IF isnull(@tmStart,@tmEnd) IS NOT NULL
SELECT 年,*
FROM SC
WHERE 年=isnull(@tmStart,@tmEnd)
ELSE
SELECT 年,*
FROM SC
END
GO
AS
begin
exec(
'SELECT 年,* from SC WHERE ' +@vswhere)
END
GO
AS
declare @sql varchar(4000)
set @sql='SELECT 年,* from SC WHERE 1=1 '
if @tmStart<>null
begin
set @sql= @sql+'AND' +@tmStart+'<=年 '
end
if @tmEnd<>null
begin
set @sql=@sql+'AND'+ @tmEnd+' >= 年'
end
CREATE PROCEDURE SZ @tmStart int,@tmEnd int = year(getdate())
AS
begin
SELECT 年,* from SC WHERE @tmStart<=年 and @tmEnd >= 年
END
GO
你这个当我执行exe SZ 2010带一个参数报错呀
需要参数 '@tmEnd',但未提供该参数。
CREATE PROCEDURE SZ
@tmStart INT=NULL,
@tmEnd INT=NULL
AS
BEGIN
IF @tmStart+@tmEnd IS NOT NULL
SELECT 年,*
FROM SC
WHERE @tmStart<= 年
AND @tmEnd>= 年
ELSE IF isnull(@tmStart,@tmEnd) IS NOT NULL
SELECT 年,*
FROM SC
WHERE 年=isnull(@tmStart,@tmEnd)
ELSE
SELECT 年,*
FROM SC
END
GO那你这样。
Tony哥果然厉害。。搞定!!
ELSE IF isnull(@tmStart,@tmEnd) IS NOT NULL
。。
WHERE 年=isnull(@tmStart,@tmEnd)
这什么意思啊,给小弟解释下吧