| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1311 人关注过本帖
标题:关于传入参数的存储过程,需要将传入的参数得到执行
只看楼主 加入收藏
问中学中问
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2009-12-22
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:10 
关于传入参数的存储过程,需要将传入的参数得到执行
关于传入参数的存储过程,需要将传入的参数得到执行.
请注意看红色标识的地方:
if exists(select * from sysobjects where name='sell')
drop proc sell
go
create proc sell
    as
        begin
            set implicit_transactions on
            begin transaction
            declare @errorSum int,@sql1 varchar(300),@sql2 varchar(300),@sql3 varchar(300)
            set @errorSum=0
            --1.如何写,相要的最终结果是,把传入的3句sql语句,得到执行。
            --2.那么在程序中,我要怎么样才知道它是成功执行了还是回滚了.怎么带出想要的参数?

            if(@errorSum<>0)
                rollback transaction               
            else
                commit transaction
                    
        end
--调用存储过程-->传入参数
EXEC sell @sql1=想要得到执行的sql语句1         
          @sql2=想要得到执行的sql语句2
          @sql3=想要得到执行的sql语句3            
搜索更多相关主题的帖子: 参数 
2010-04-25 15:39
MIQIKing
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:36
专家分:106
注 册:2010-3-21
收藏
得分:5 

if exists(select * from sysobjects where name='sell')
drop proc sell
go
create proc sell
    as
        begin
            set implicit_transactions on
            begin transaction
            declare @errorSum int,@sql1 varchar(300),@sql2 varchar(300),@sql3 varchar(300)
            set @errorSum=0
            if(@errorSum<>0)
                begin
                    raiserror('输入错误',16,1)
                    rollback transaction
                end               
            else
                commit transaction
                    
        end


DECLARE @errorSum int,@sql1 varchar(300),@sql2 varchar(300),@sql3 varchar(300)
EXEC sell  a,b,c
2010-04-26 06:50
cnfarer
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:179
帖 子:3330
专家分:21157
注 册:2010-1-19
收藏
得分:5 
在存储过程中定义一个返回值变量,用于存放返回值,在存储过程中用return语句返回。初始值为0
当第一句出现错误时,给它加上一个值比如1
当第二句出现错误时,给它加上另一值比如2
当第三句出现错误时,给它加上另一值比如4
这样通过返回值就知道哪句正常执行了。返回0,全部执行,返回1,第一句出错。。。返回3,第1,2句出错,返回5第1,3句出错返回7全部出错,返回6第2,3句出错。



★★★★★为人民服务★★★★★
2010-04-26 10:30
问中学中问
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2009-12-22
收藏
得分:0 
回复2 楼
    我想要传入的sql语句得到执行啊. 怎么做?
2010-04-26 13:15
问中学中问
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2009-12-22
收藏
得分:0 
回复3 楼
    看得有点抽象,能抽点时间写下吗?谢谢
2010-04-26 13:17
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:10 
if exists(select * from sysobjects where name='sell')
drop proc sell
go
create proc sell
@sql1 varchar(300),@sql2 varchar(300),@sql3 varchar(300)
   as
        begin
            set implicit_transactions on
            begin transaction
            declare @errorSum int
            set @errorSum=0
            if(@errorSum<>0)
                begin
                    raiserror('输入错误',16,1)
                    rollback transaction
                end               
            else
                exec (@sql1)
                exec (@sql2)
                exec (@sql3)
                commit transaction
                    
        end

EXEC sell @sql1='',@sql2='',@sql3=''
2010-04-26 14:20
问中学中问
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2009-12-22
收藏
得分:0 
回复6 楼

比如说:
自么赋值啊?老报错,如insert附近有语法错误,@sql2,@sql3附近有语法错误
@errorSum未定义
EXEC sell @sql1='',@sql2='',@sql3=''
2010-04-26 14:57
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:0 
insert附近有语法错误可能是你的语句写得有问题,比如sql语句是insert into table1(column1,column2) values(1,'abc')
你得写成 exec sell @sql='insert into table1(column1,column2) values(1,''abc'')'才行
2010-04-26 17:08
问中学中问
Rank: 1
等 级:新手上路
帖 子:13
专家分:5
注 册:2009-12-22
收藏
得分:0 
哦.这样的啊。呵呵
Ok进行下一个问题:
    那么在程序中我如何知道 此存储过程是提交了不是回滚了?
也可以说
declare @errorSum int
            set @errorSum=0
sql语句+set @errorSum=@@error+@errorSum传进去的时候报错,未定义.那么怎么在sql语句后设置这个
2010-04-26 17:24
aei135
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:232
专家分:1176
注 册:2009-4-6
收藏
得分:0 
if exists(select * from sysobjects where name='sell')
drop proc sell
go
create proc sell
@sql1 varchar(300),@sql2 varchar(300),@sql3 varchar(300)
   as
        begin
            set implicit_transactions on
            begin transaction
                if(@@error<>0)
                begin
                    raiserror('事务已滚回!',16,1)
                    rollback transaction
                    print @@error
                end               
            else
                begin
                exec (@sql1)
                exec (@sql2)
                exec (@sql3)
                commit transaction
                end
        end

EXEC sell @sql1='',@sql2='',@sql3=''
2010-04-27 09:42
快速回复:关于传入参数的存储过程,需要将传入的参数得到执行
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.072370 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved