我的一个存储过程如下:
ALTER PROCEDURE [dbo].[ap_BuyAndSaleAction]
@DataAction int,
@ID int = 0,
@RentWay nvarchar(100),
@City nvarchar(100),
@District nvarchar(100),
@Title nvarchar(100),
@Address nvarchar(1000),
@XiaoQu nvarchar(100),
@AddTime datetime,
@UserID int,
@HouseType tinyint,
@Money money,
@Floor tinyint,
@TotalFloor tinyint,
@MainJi smallint,
@NianDai nvarchar(100),
@Validity smallint,
@ZhongJie tinyint,
@ZhuangXiu nvarchar(1000),
@PayMent nvarchar(500),
@ChaoXiang nvarchar(100),
@ChanQuan nvarchar(100),
@KaiFaShang nvarchar(100),
@Contact nvarchar(100),
@Tel varchar(20),
@Mobile varchar(20),
@Memo nvarchar(max),
@Memo1 nvarchar(50),
@Memo2 nvarchar(50),
@Memo3 nvarchar(50),
@Flag tinyint,
@TableNum nvarchar(20)
AS
if @DataAction=0
BEGIN
declare @select varchar(max)
set @select = 'insert into [tb_'+rtrim(@TableNum)+'_BuyAndSale]
(
[RentWay],
[City],
[District],
[Title],
[Address],
[XiaoQu],
[AddTime],
[UserID],
[HouseType],
[Money],
[Floor],
[TotalFloor],
[MainJi],
[NianDai],
[Validity],
[ZhongJie],
[ZhuangXiu],
[PayMent],
[ChaoXiang],
[ChanQuan],
[KaiFaShang],
[Contact],
[Tel],
[Mobile],
[Memo],
[Memo1],
[Memo2],
[Memo3],
[Flag]
)
values('+
@RentWay+','+
@City+','+
@District+','+
@Title+','+
@Address+','+
@XiaoQu+','+
rtrim(@AddTime)+','+
rtrim(@UserID)+','+
rtrim(@HouseType)+','+
rtrim(@Money)+','+
rtrim(@Floor)+','+
rtrim(@TotalFloor)+','+
rtrim(@MainJi)+','+
@NianDai+','+
rtrim(@Validity)+','+
rtrim(@ZhongJie)+','+
@ZhuangXiu+','+
@PayMent+','+
@ChaoXiang+','+
@ChanQuan+','+
@KaiFaShang+','+
@Contact+','+
@Tel+','+
@Mobile+','+
@Memo+','+
@Memo1+','+
@Memo2+','+
@Memo3+','+
rtrim(@Flag)+')'
EXEC(@select)
set
@ID=scope_identity()
end
if @DataAction=1
begin
declare @update varchar(1000)
set @update ='UPDATE [tb_'+rtrim(@TableNum)+'_BuyAndSale] SET
[RentWay] = @RentWay,
[City] = @City,
[District] = @District,
[Title] = @Title,
[Address] = @Address,
[XiaoQu] = @XiaoQu,
[AddTime] = @AddTime,
[UserID] = @UserID,
[HouseType] = @HouseType,
[Money] = @Money,
[Floor] = @Floor,
[TotalFloor] = @TotalFloor,
[MainJi] = @MainJi,
[NianDai] = @NianDai,
[Validity] = @Validity,
[ZhongJie] = @ZhongJie,
[ZhuangXiu] = @ZhuangXiu,
[PayMent] = @PayMent,
[ChaoXiang] = @ChaoXiang,
[ChanQuan] = @ChanQuan,
[KaiFaShang] = @KaiFaShang,
[Contact] = @Contact,
[Tel] = @Tel,
[Mobile] = @Mobile,
[Memo] = @Memo,
[Memo1] = @Memo1,
[Memo2] = @Memo2,
[Memo3] = @Memo3,
[Flag] = @Flag
WHERE
[ID] = @ID'
exec(@update)
end
if @DataAction=2
begin
declare @delete varchar(100)
set @delete = 'delete from [tb_'+rtrim(@TableNum)+'_BuyAndSale] where [ID] = @ID'
exec(@delete)
end
select @ID
当执行@DataAction=0,填入相映的之后,出来结果,这是怎么回事,请各位大侠帮帮忙??
ALTER PROCEDURE [dbo].[ap_BuyAndSaleAction]
@DataAction int,
@ID int = 0,
@RentWay nvarchar(100),
@City nvarchar(100),
@District nvarchar(100),
@Title nvarchar(100),
@Address nvarchar(1000),
@XiaoQu nvarchar(100),
@AddTime datetime,
@UserID int,
@HouseType tinyint,
@Money money,
@Floor tinyint,
@TotalFloor tinyint,
@MainJi smallint,
@NianDai nvarchar(100),
@Validity smallint,
@ZhongJie tinyint,
@ZhuangXiu nvarchar(1000),
@PayMent nvarchar(500),
@ChaoXiang nvarchar(100),
@ChanQuan nvarchar(100),
@KaiFaShang nvarchar(100),
@Contact nvarchar(100),
@Tel varchar(20),
@Mobile varchar(20),
@Memo nvarchar(max),
@Memo1 nvarchar(50),
@Memo2 nvarchar(50),
@Memo3 nvarchar(50),
@Flag tinyint,
@TableNum nvarchar(20)
AS
if @DataAction=0
BEGIN
declare @select varchar(max)
set @select = 'insert into [tb_'+rtrim(@TableNum)+'_BuyAndSale]
(
[RentWay],
[City],
[District],
[Title],
[Address],
[XiaoQu],
[AddTime],
[UserID],
[HouseType],
[Money],
[Floor],
[TotalFloor],
[MainJi],
[NianDai],
[Validity],
[ZhongJie],
[ZhuangXiu],
[PayMent],
[ChaoXiang],
[ChanQuan],
[KaiFaShang],
[Contact],
[Tel],
[Mobile],
[Memo],
[Memo1],
[Memo2],
[Memo3],
[Flag]
)
values('+
@RentWay+','+
@City+','+
@District+','+
@Title+','+
@Address+','+
@XiaoQu+','+
rtrim(@AddTime)+','+
rtrim(@UserID)+','+
rtrim(@HouseType)+','+
rtrim(@Money)+','+
rtrim(@Floor)+','+
rtrim(@TotalFloor)+','+
rtrim(@MainJi)+','+
@NianDai+','+
rtrim(@Validity)+','+
rtrim(@ZhongJie)+','+
@ZhuangXiu+','+
@PayMent+','+
@ChaoXiang+','+
@ChanQuan+','+
@KaiFaShang+','+
@Contact+','+
@Tel+','+
@Mobile+','+
@Memo+','+
@Memo1+','+
@Memo2+','+
@Memo3+','+
rtrim(@Flag)+')'
EXEC(@select)
set
@ID=scope_identity()
end
if @DataAction=1
begin
declare @update varchar(1000)
set @update ='UPDATE [tb_'+rtrim(@TableNum)+'_BuyAndSale] SET
[RentWay] = @RentWay,
[City] = @City,
[District] = @District,
[Title] = @Title,
[Address] = @Address,
[XiaoQu] = @XiaoQu,
[AddTime] = @AddTime,
[UserID] = @UserID,
[HouseType] = @HouseType,
[Money] = @Money,
[Floor] = @Floor,
[TotalFloor] = @TotalFloor,
[MainJi] = @MainJi,
[NianDai] = @NianDai,
[Validity] = @Validity,
[ZhongJie] = @ZhongJie,
[ZhuangXiu] = @ZhuangXiu,
[PayMent] = @PayMent,
[ChaoXiang] = @ChaoXiang,
[ChanQuan] = @ChanQuan,
[KaiFaShang] = @KaiFaShang,
[Contact] = @Contact,
[Tel] = @Tel,
[Mobile] = @Mobile,
[Memo] = @Memo,
[Memo1] = @Memo1,
[Memo2] = @Memo2,
[Memo3] = @Memo3,
[Flag] = @Flag
WHERE
[ID] = @ID'
exec(@update)
end
if @DataAction=2
begin
declare @delete varchar(100)
set @delete = 'delete from [tb_'+rtrim(@TableNum)+'_BuyAndSale] where [ID] = @ID'
exec(@delete)
end
select @ID
当执行@DataAction=0,填入相映的之后,出来结果,这是怎么回事,请各位大侠帮帮忙??
@ID int = 0 OUTPUT,
GODECLARE @return_value intEXEC @return_value = [dbo].[ap_BuyAndSaleAction]
@DataAction = 0,
@RentWay = N'0',
@City = N'213',
@District = N'214',
@Title = N'万柳小区一居室',
@Address = N'万柳小区',
@XiaoQu = N'万柳小区',
@AddTime = NULL,
@UserID = 1,
@HouseType = 0,
@Money = 120,
@Floor = 5,
@TotalFloor = 12,
@MainJi = 90,
@NianDai = N'1999',
@Validity = 4,
@ZhongJie = 0,
@ZhuangXiu = N'精装',
@PayMent = N'现金',
@ChaoXiang = N'朝南',
@ChanQuan = N'有',
@KaiFaShang = N'万科',
@Contact = N'张',
@Tel = N'20662066',
@Mobile = N'12312345678',
@Memo = N'很不错的防止',
@Memo1 = N'''''',
@Memo2 = N'''''',
@Memo3 = N'''''',
@Flag = 0,
@TableNum = N'1'SELECT 'Return Value' = @return_valueGO
在存储过程中,@AddTime与其它代码相加后,@select也为null了所以并不是你的代码没执行或没出错,而是根本没有什么可以执行
另外,生成SQL语句时,字符串变量,日期变量等应加上引号,如
values('+
@RentWay+','+
@City+','+
@District+','+
@Title+','+
@Address+','......应改成values('''+
@RentWay+''','''+
@City+''','''+
@District+''','''+
@Title+''','''+
@Address+''','''.......
特别感谢sdxiong ,WWWTYB
结合两个提供的解决方式,用@select调试,然后修改。最后成功!