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

SQL 存储过程中的赋值解决方案

2012-02-15 
SQL 存储过程中的赋值SQL codeCREATE PROCEDURE AA(@PAGE INT,@CURRENT INT)DECLARE @STR NVARCHAR(1000)I

SQL 存储过程中的赋值

SQL code
CREATE PROCEDURE AA(   @PAGE INT,   @CURRENT INT)DECLARE @STR NVARCHAR(1000)IF (PAGE='1')  IF (CURRENT='0')     STR='SELECT * FROM TABLE'EXEC sp_executesql @STR

在TABLE存在,并有内容的情况下,为什么运行后,得不到内容,而在此情况下

SQL code
CREATE PROCEDURE AA(   @PAGE INT,   @CURRENT INT)DECLARE @STR NVARCHAR(1000)SET @STR='SELECT * FROM TABLE2'IF (PAGE='1')  IF (CURRENT='0')     STR='SELECT * FROM TABLE'EXEC sp_executesql @STR

却能得到TABLE2的内容,小弟不是很了解SQL的变量的赋值和作用域(我想问题是发生在这里面吧),请大家解答

[解决办法]
SQL code
CREATE PROCEDURE AA   @PAGE INT,   @CURRENT INTasDECLARE @STR NVARCHAR(1000)SET @STR='SELECT * FROM TABLE2'IF (@PAGE='1')  IF (@CURRENT='0')     @STR='SELECT * FROM TABLE'EXEC sp_executesql @STR
[解决办法]
变量名必须以@开头,这是规定.
@@开头是全局
@开头是局部
[解决办法]
SQL code
CREATE PROCEDURE AA(   @PAGE INT,   @CURRENT INT)ASDECLARE @STR NVARCHAR(1000)IF (PAGE='1') and (CURRENT='0')    set @STR='SELECT * FROM TABLE'else     set @STR='SELECT * FROM TABLE2'EXEC sp_executesql @STR 

热点排行