bcp存储过程
代码参考如下:
create proc p_abc @i int
as
--中间有个非常复杂的计算
select * from #tmp where fid=@i
go
create proc p_test @i int
as
set nocount on
create table #temp(.....)
insert into #temp
exec p_abc @i --执行这个语句后返回一个table,把这个返回结果插入到临时表
go
‘贰’ 怎样写存储过程,让BCP命令直接全部执行
create proc p_createjob
@jobname varchar(100), --作业名称
@sql varchar(8000), --要执行的命令
@serverName sysname='', --job server名
@dbname sysname='', --默认为当前的数据库名
@freqtype varchar(6)='day', --时间周期,month 月,week 周,day 日
@fsinterval int=1, --相对于每日的重复次数
@time int= --开始执行时间,对于重复执行的作业,将从0点到23:59分!
‘叁’ sqlserver怎么查看存储过程
以下命令:
USE 数据库名;
GO
EXEC sp_helptext N'数据库名.dbo.uspLogError';
‘肆’ 怎样让SqlServer的存储过程返回结果集
1、返回结果集
这是客户端应用程序返回结果的最通用的方法。结果集是通过使用SELECT语句选择数据产生的。结果集可以从永久表、临时表或局部变量中产生。将结果返回到另一个存储过程不是一种有效的方法。存储过程不能访问另一个存储过程建立的结果集。
例如从永久表中返回结果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromPermtable
AS
SELECT au_iname FROM authors
例如从局部变量中创建结果集:
USE pubs
GO
CREATE PROCEDURE ap_CreateResultFromVariable
AS
DECLARE @au_iname char(20)
SELECT @au_iname = au_iname FROM authors
WHERE au_id = ‘172-32-1176’
SELECT @au_id
GO
‘伍’ 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执行多个存储过程
我学得你这个可以试试 union ,sql1 后面直接跟 union 在接sql2,查询出来的结果是sql1和sql2的集合,可以试试
‘柒’ 将下面的SqlServer存储过程改为mysql的存储过程
dropPROCEDUREifexistsCOUNT_FEE_CREDITS;
CREATEprocereCOUNT_FEE_CREDITS(
inp_startdatetime,
inp_enddatetime,
inp_timedatetime
)
begin
declarev_aint;
declarev_bdecimal(12,2);
declarev_ddecimal(12,2);
declarev_edecimal(12,2);
declarev_gbigint;
declarev_fdecimal(12,2);
declarev_namenvarchar(50);
declarev_loginnamenvarchar(50);
declarev_hdecimal(12,2);
declarev_idecimal(12,2);
selectcount(a.USER_ID)intov_afrom(
selectt.USER_IDasUSER_IDfrom(
select*fromT_USER_CREDITwhereCREATE_TIMEbetweenp_startandp_end
)astwheret.OPERATE_TYPE='101'groupbyt.USER_IDhavingt.USER_ID!=0
)a;
while0<v_ado
selectc1.CREDITS,c1.USER_IDintov_h,v_gfrom
(
SELECT@rownum:=@rownum+1ASrowNum,b.USER_ID,b.CREDITSFROM
(
selectt.USER_IDasUSER_ID,sum(t.CREDITS)asCREDITSfromT_USER_CREDITast
wheret.OPERATE_TYPE='101'andCREATE_TIMEbetweenp_startandp_endgroupbyt.USER_ID
havingt.USER_ID!=0
ORDERBYt.USER_IDasc
)b,(select@rownum:=0)a
)c1
wherec1.rowNum=v_a;
SELECTFREEZE_CREDITS,INCOME_CREDITS,DEDUCTION_CREDITS,
NAME,LOGIN_NAMEintov_b,v_d,v_e,v_name,v_loginname
FROMT_SYS_USER_BASICwhereUSER_ID=v_g;
setv_i=v_b-v_h;
setv_f=CAST((v_h/10)asdecimal(12,2));
if(v_h<=8000.00)then
setv_f=0.00;
updateT_SYS_USER_BASICsetFREEZE_CREDITS=v_i,INCOME_CREDITS=v_d+v_hwhereUSER_ID=v_g;
insertintoT_USER_INCOME_ACCOUNT(USER_ID,LOGIN_NAME,REAL_INCOME,TOTAL_INCOME,FEE,CREATE_TIME,USER_NAME)values(v_g,v_loginname,v_h,v_h,v_f,p_time,v_name);
elseif(8000.00<v_handv_h<=40000.00)then
setv_a=v_a-1;
endif;
/**/
endwhile;
end;
‘捌’ SqlServer存储过程
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数据库 中写存储过程有什么好处:
存储过程(Stored Procere)是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中。用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。
简单来说 存储过程 可以同时执行 多条sql语句 而且存储过程要比通常的sql语句要快 可以向里面传进参数 和 传出参数
一个存储过程例子:
create procere UserInfo
@TitleName nvarchar(50),//串进参数
@Content nvarchar(Max),
@PostTime datetime(8),
@Username nvarchar(50),
@TitleID int output
as//sql语句集
declare @newid int
insert into Titles(Titlename,Username,PostTime) values(@TitleName,@Username,@PostTime)
select @newid=max(id) from Titles
insert into TieZiDetail(TitleID,Username,PostTime,Content) values(@newid,@Username,@PostTime,@Content)
select @TitleID=@newid
‘拾’ sqlserver怎么创建存储过程
在我们实际的项目开发中,我们会经常的遇见,从多张表中获取数据,而且引用也比较频繁。那么选择存储过程(有时候也可以使用视图,看情况而定)会方便很多,速度也会快很多。
第一步:点击数据库下的“可编程性”,选择“存储过程”,点击鼠标右键,选择“新建存储过程”
2
第二步:在create PROCEDURE 后 输入存储过程的名字,紧跟着的就是定义存储过程的参数,接下来就可以去编写自己所需要组装的存储过程语句了
注意,怕写的不对,可以执行下,想验证sql语句是否正确,就使用print输出下
3
第三步:点击上面的执行,存储过程就写好了,要怎么调用呢,在sqlserver的语句查询框中,输入exec 存储过程名 参数,执行就可以了。
http://jingyan..com/article/380abd0a4122161d91192c60.html