22,207
社区成员
发帖
与我相关
我的任务
分享
create table Account
(
accid char(32),
balance money,
creditlast datetime,
userid varchar(32)
)
go
if exists(select * from sysobjects where name='pro_Account')
drop procedure pro_Account
go
create procedure pro_Account
@UserID nvarchar(36), --用户ID
@Operate int, --操作 0充值,1支取
@MyMoney money, --金额
@BankID int, --银行ID
@State int --返回状态0失败,1成功,2余额不足
as
declare @isUser int=0, --是否存在用户
@mySql nvarchar(max), --执行SQL语句
@errNo int=0, --总错误
@myCount int=0 --影响行数
begin transaction
select @isUser=COUNT(accid) from Account where userid=@UserID
if(@isUser<=0)
begin
declare @accid nvarchar(36)=REPLACE(convert(varchar(36),NEWID()),'-',''),
@mydate nvarchar(100)=convert(nvarchar(100),GETDATE(),20)
print @mydate
print @accid
set @MyMoney=CAST(@MyMoney as money)
print cast(@mymoney as nvarchar(20))
set @mySql='insert into Account values('''+@accid+''','+@MyMoney+','''+@mydate+''','''+@UserID+''')'
exec sp_executesql @mySql,N'@accid nvarchar(36),@MyMoney money,@mydate nvarchar(100),@UserID nvarchar(36)',@accid,@MyMoney,@mydate,@UserID
--exec sp_executesql @mySql,N'@accid nvarchar(36),@mydate nvarchar(100),@UserID nvarchar(36)',@accid,@mydate,@UserID
set @mycount=@myCount+@@ROWCOUNT
print @mysql
print @mycount
set @errNo=@errNo+@@ERROR
print @errNo
if(@errNo>0 or @myCount<=0)
begin
print '回滚'
rollback
return
end
end
commit
调用
declare @id nvarchar(36)
set @id=REPLACE(convert(varchar(36),NEWID()),'-','')
exec pro_Account @id,0,21.3,0,0
SET @Sql='select top 1 @ID='+@column+' FROM sysobjects where ID>@ID order by ID asc'
DECLARE @column sysname
SET @column='ID'
DECLARE @ID INT,@Sql NVARCHAR(1000)
SET @ID=1000000
SET @Sql='select top 1 @ID='+@column+' FROM sysobjects where ID>@ID order by ID asc'
EXEC sp_executesql @sql,N'@ID int output',@ID OUTPUT
SELECT * FROM sysobjects WHERE ID=@ID
DECLARE @column sysname
SET @column='ID'
EXEC('select '+@column+' FROM tb')
if exists(select * from sysobjects where name='pro_Account')
drop procedure pro_Account
go
create procedure pro_Account
@UserID nvarchar(36), --用户ID
@Operate int, --操作 0充值,1支取
@MyMoney money, --金额
@BankID int, --银行ID
@State int --返回状态0失败,1成功,2余额不足
as
BEGIN TRY
if NOT EXISTS(SELECT 1 from Account where userid=@UserID)
insert into Account values(@UserID,@MyMoney,GETDATE(),@UserID)
END TRY
BEGIN CATCH
PRINT N'回滚'
END CATCH