首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请大家帮看看这存储过程的有关问题

2012-01-24 
请大家帮看看这存储过程的问题CREATEPROCEDUREUP(@A_Lnvarchar(20))ASdeclare@LFbitdeclare@sqlvarchar(10

请大家帮看看这存储过程的问题
CREATE   PROCEDURE     UP
(
@A_L   nvarchar(20)

)

AS
declare   @LF   bit
declare   @sql       varchar(1024)
                          declare   @Update   int
 
                          set       @Update       =       0;  
select   @LF=LF   from   A   WHERE   ID=   @A_L      
                          IF   @LF   IS   NOT   NULL
BEGIN
select         @sql       =   'UPDATE   A   SET   state   =   2   WHERE   (ID   =   @A_L) '
                                 
                     
                          select         @Update       =       1;      

END
 
  if       @Update       =       1    
                                          exec(@sql);      

UPDATE不起作用。问题出在哪里?


[解决办法]
改成
select @sql = 'UPDATE A SET state = 2 WHERE ID = ' + convert(varchar,@A_L)

或者
exec(@sql) 改成 exec sp_executesql @sql,N '@A_L int ',@A_L

两者选1



[解决办法]
看错了你的数据类型

@sql 类型改成
declare @sql nvarchar(1024) -- 这个必须是 nvarchar 类型,然后
exec(@sql)
改成
exec sp_executesql @sql,N '@A_L nvarchar(20) ',@A_L

[解决办法]
print 出来看看
然后执行print出来的语句,看看如何

[解决办法]
CREATE PROCEDURE UP
(
@A_L nvarchar(20)
)
AS
declare @LF bit
declare @sql nvarchar(1024) /*声明为nvarchar类型*/
select @LF=LF from A WHERE ID= @A_L
IF @LF IS NOT NULL
BEGIN
set @sql = N 'UPDATE A SET state = 2 WHERE (ID = @A_L) '
EXEC sp_executesql @sql,N '@A_L nvarchar(20) ',@A_L
END
GO

热点排行