在sql存储过程中有两个参数

在sql存储过程中有两个参数是nvarchar的类型的201209和201212(随机的两个参数会变的)
怎么做才能得到A=201209 201210 201211 201212
忘记说, 了这两个参数是yyyyMM也就是日期格式的
要得到的是日期月份的一个一个增加的

declare @datestart varchar(6), --传的参数
@dateend varchar(6), -- 传的参数
@result nvarchar(max),
@monthNumber int,
@result1 nvarchar(8)
set @datestart='201109'
set @dateend='201212'
set @result=@datestart+' '
select @monthNumber=DateDiff(m,convert(datetime,@datestart+'01'),convert(datetime,@dateend+'01'))
select @monthnumber
declare @i int
set @i=1
while @i<=@monthnumber
begin
select @result1=convert(varchar(6),dateadd(m,@i,convert(datetime,@datestart+'01')),112)
set @i=@i+1
set @result=@result+@result1+' '
end
select @result
上边的可以实现你所要的功能的,,顶二楼,,参考二楼写的,,如果要改为存储过程,,你只需把上边的代码改改就行的,,对于起始时间和结束时间的判断,,你可以再后台代码中实现,,也可以在存储过程中实现,,只需要使用if else就行了
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-12-13
很简单
首先to_number,对比一下,得出大小
使用循环,得到四个数字再to_char转为字符串
最后连接成为一个字符串追问

忘记说, 了这两个参数是yyyyMM也就是日期格式的
要得到的是日期月份的一个一个增加的
万一是201112 201202那怎么办

来自:求助得到的回答
第1个回答  2012-12-13
你最终要全月的时间?还是截止到当天的?追问

截止到当天的。

追答

sqlserver的:
declare @start varchar(6)
set @start='201209'
select @start
while @start<convert(varchar(6),getdate(),112) begin
set @start=convert(varchar(6),dateadd(m,1,convert(datetime,@start+'01')),112)
select @start
end

追问

112是什么??

追答

20121213的时间格式,取前6位到月

追问

为什么没看到第二个参数出现过

追答

你说截止到当天的。。你要的格式不是就是201212吗

SQL下,写了一个存储过程,但是在执行时总是提示【没有参数,但却为该过程...
你没有定义参数,而在执行时却提供了2个参数!估计是你语法不熟悉吧。--- CREATE PROCEDURE proName (param1 DataType ,@param2 DataType = 缺省值 ) AS BEGIN ...END

在PL\/SQL中使用SQL窗体执行存储过程的语法怎么写?(两个参数)
call Proc_name(parameter1,parameter2);红线是说明你这个命令使用不正确。在命令窗口中,前面加上Declare声明下就可以了

...执行sql Service数据库里面的存储过程(带两个参数),急求代码!高手赐...
timer.Interval = 10000;timer.Enabled = true;timer.Elapsed += new System.Timers.ElapsedEventHandler(timer_Elapsed);timer.Start();} void timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e){ \/\/这里写执行存储过程的代码 }

SQL的存储过程中,怎么同时取两个查询条件不同的数值,
第一个语句就错了select @pp=sum(money) from A wnere (时间条件) 查出的是所有部门的总额 其实两个语句可以合在一起写,如下:select depname,@pp=sum(money) from A where (时间条件) group by depname

procSQL语句
在SQL编程中,PROCEDURE(存储过程)是一种被预先定义和编译的SQL代码块。这些代码块可以被多次调用,为数据库操作提供效率和逻辑组织。一个典型的PROCEDURE实例如下:以下的PROCEDURE 'sp_test'接收两个参数:nick和userid,用于搜索数据库表'db_carduser'中的记录。如果nick不为空,则程序将执行搜索昵称...

sql 存储过程中 如何使用declare 有的存储过程声明了,有的没有声明...
1、打开SQL Database Studio。2、点击展开数据库连接和数据库。3、右击要修改的存储过程,然后点击【alter procedure】。4、此时进入存储过程编辑界面。5、修改存储过程语句。6、点击左侧的【execute】。7、此时显示执行结果,成功表示存储过程的定义修改完成了。

SQL存储过程返回的两个结果集,怎么插入到临时表?
在接收结果的过程或代码中循环读取结果数据,再插入即可,又或者你可以在将要返回结果集的存储过程中直接插入临时表

在sqlserver中,存储过程proc,procedure什么区别
其中 CREATE PROC 语句(完整语句为CREATE PROCEDURE)的意思就是告诉SQL SERVER,现在需要建立一个存储过程,upGetUserName 就是存储过程名称,@intUserId 和 @ostrUserName 分别是该存储过程的两个参数,注意,在SQL SERVER中,所有用户定义的变量都以“@”开头,OUTPUT关键字表示这个参数是用来输出的,AS...

sql server中存储过程中update一个表中的两个属性,用逗号隔开还是用and...
用逗号,若还不行的话,请写成两个独立的update语句。

sql存储过程中的output的作用是什么
output的参数是输出参数,执行完了存储过程之后,这个参数的值会发生变化 不能理解为return,如果要类比,你可以理解为ref或者Out

相似回答