create
procere
prCreateSubPlan
as
begin
declare
@id
int,
@intCycle
int,
@planName
varchar(100),
@createTime
smalldatetime,
@cycleTime
int
select
@id
=
min(t_cplan_id)
from
t_cplan
while
(@id
is
not
null)
begin
select
@planName=t_plan_name,
@createTime
=
createTime,
@cycleTime
=
cycleTime
from
t_cplan
where
t_cplan_id=@id
select
@intCycle=
0
while
(@intCycle<@cycleTime)
begin
--
表t_plan
列t_plan_id是IDENTITY
列
insert
t_plan
(t_plan_name,
t_cplan_id,
createTime)
values
(@planName,
@id,
dateadd(day,
@intCycle,
@createTime))
select
@intCycle
=
@intCycle
+
1
end
select
@id
=
min(t_cplan_id)
from
t_cplan
where
t_cplan_id>@id
end
end
go
⑵ sqlserver 存储过程问题
楼主没有把表的结构贴出来,没有类型不好判断。
错误1 @str 定义后没有初始化。
如果只是定义,不初始化,那么它就是null。
set @str = @str + ' and 1=1 ' 这句话运行后,@str的值还是null,因为null型的varchar ‘+’运算后还是null。
如果将@str初始化后,以以下的引数运行你的存储过程:
@BusinessId = '0',
@order = 'year',
@UserId = '0'
得到的sql语句(@sql+@str)是:
SELECT Report_Id, Business_Id, Send_UserID,
Receive_UserId, State_Msg, Subject_Msg,
Content_Msg, Post_Date,Is_Open
FROM ReportMsg
where State_Msg=1 and Business_Id=0
and 1=1 and
Post_Date between Dateadd(yy,datediff(yy,0,getdate()),0)
and Dateadd(ms,-3,DATEADD(yy, DATEDIFF(yy,0,getdate())+1, 0))
order by Post_Date desc
楼主看看是不是想要的结果,不知道字段类型不好说,因为:where State_Msg=1 and Business_Id=0中,如果State_Msg,Business_Id是varchar类型的,那么1 和 0 就的加单引号,楼主在拼sql语句的时候得手动拼上单引号。
不知道这样写够不够明白。
⑶ 带参数的sqlserver存储过程的定义
@是标示符,代表是变量
一个@表示局部变量
两个@表示是全局变量,全局变量是有服务器定义的
⑷ 关于sqlserver存储过程的问题
创建带游标Cursor的存储过程
CREATE PROCEDURE PT @t_cursor CURSOR VARYING OUTPUT AS
SET @t_cursor=CURSOR FOR
Select tid,tname FROM Teacher OPEN @t_cursor
接下来,执行一个批处理,声明局部游标变量,执行上述过程以将游标赋值给局部变量,然后从该游标提取行。
Declare @gh char(4),@xm varchar(50), @MyCursor CURSOR
EXEC PT @MyCursor OUTPUT
WHILE (@@FETCH_STATUS =0)
BEGIN
FETCH NEXT FROM @MyCursor INTO @gh,@xm
PRINT @gh+' '+@xm
END
DEALLOCATE @MyCursor
⑸ sqlserver procere 怎么对一个数累加赋值
根据你的应用场景
(1)可以使用游标,具体使用网络游标的使用方法
(2)while
declare@numint
set@num=0
while@num<100
begin
set@num=@num+1
end
select@num
⑹ sqlserver 存储过程
有些符号你写成中文的了
⑺ sqlserver存储过程怎么调试
最近在做vb项目的时候,用到了存储过程的调试,现在总结一下发现单步调试存储过程有以下2种方法:
1.这种方法自己已经做过,是可以的,如下:
a.如果目标数据库存在存储过程,右击该存储过程-修改,打开存储过程,并在需要的地方设置断点。(如果没有自定义存储过程,则需要在Sql Server 2012数据库中创建存储过程,完成后在里面设置断点);
b.另外开启一个新建查询窗口,写入调用代码:例如 exec BillManageInputProc '主单1','0111111','0111112','121','legend','2014-09-24','001','2014-09-24','1','市场部','0' ,单击 调试按钮 启动存储过程的调试;
c.单击 F 11 进行逐句调试。
2.在vs2010调试存储过程步骤如下:
首先,打开vs,点击 视图-->服务器资源管理器
http://www.cnblogs.com/caishiquan/p/4050237.html
⑻ sqlserver存储过程怎么学
什么是存储过程? q 存储过程(procere)类似于C语言中的函数 q 用来执行管理任务或应用复杂的业务规则 q 存储过程可以带参数,也可以返回结果 q 存储过程可以包含数据操纵语句、变量、逻辑 控制语句等 存储过程的优点 (1)执行速度快。
⑼ sqlserver 存储过程的解释。
这三个是自定义变量,@sType 、@iPKID 、@iTimes都是变量名,varchar、int 是变量属性 ,varchar是字符型的,长度为10;int是整型,不用定义长度的。
⑽ sqlserver存储过程返回out参数类型
SQL2008可用表类型
SQL2005以上版本可用xml类型
之前的版本返回结果集
其它引用时可用临时表或表变量接收结果集