首页 新闻 会员 周边 捐助

T-SQL 执行错误提示:不是有效的标识符

0
悬赏园豆:10 [待解决问题]

查询分析器中执行如下代码: 

declare @tempUserTable table(PK_UserID int,FK_RoleID int,ParentUserID int)
declare @SQLStr varchar(2222)
set @SQLStr = 'insert @tempUserTable select PK_UserID,FK_RoleID,ParentUserID 
from tbl_ssc_User
where ParentUserID in (select PK_UserID from tbl_ssc_User where ParentUserID =1)'
 exec @SQLStr

 

执行错误:

消息 203,级别 16,状态 2,第 6 行
名称 'insert @tempUserTable select PK_UserID,FK_RoleID,ParentUserID
   from tbl_ssc_User where ParentUserID in
      (select PK_UserID from tbl_ssc_User where ParentUserID =1)' 不是有效的标识符。

问题补充:

直接在查询分析器中,或者在自定义函数体内执行 exec T-SQL查询语句,都提示错误...

在存储过种中调用 包含 exec T-SQL 的自定义函数,也提示错误...

exec StoredProcedure_Name  这样才可以

或者在存储过程中,执行 exec T-SQL查询语句

 

这好像不是什么问题什么新问题,备忘一下吧...

jmgy的主页 jmgy | 初学一级 | 园豆:142
提问于:2012-07-07 16:44
< >
分享
所有回答(4)
0

错误都报出来了,仔细检查那个sql语句。

悟行 | 园豆:12559 (专家六级) | 2012-07-07 17:47
0

改为这样试试:

declare @tempUserTable varchar(128)= N'table(PK_UserID int,FK_RoleID int,ParentUserID int)' 
declare @SQLStr varchar(2222)
set @SQLStr = 'insert '+@tempUserTable+ ' select PK_UserID,FK_RoleID,ParentUserID 
from tbl_ssc_User 
where ParentUserID in (select PK_UserID from tbl_ssc_User where ParentUserID =1)'
exec @SQLStr
dudu | 园豆:30948 (高人七级) | 2012-07-07 17:57

谢谢,

支持(0) 反对(0) jmgy | 园豆:142 (初学一级) | 2012-07-09 15:31

按您给的参考方式,报的错误还是一样的..

支持(0) 反对(0) jmgy | 园豆:142 (初学一级) | 2012-07-09 15:33
0

耐心的盘查一下.

jerry-Tom | 园豆:4077 (老鸟四级) | 2012-07-08 17:57
0

@tempUserTable 表变量不能用在组装SQL里面,使用临时表替换吧。


CREATE TABLE #tempUserTable
(
PK_UserID INT ,
FK_RoleID INT ,
ParentUserID INT
)
DECLARE @SQLStr VARCHAR(2222)
SET @SQLStr = 'insert #tempUserTable select PK_UserID,FK_RoleID,ParentUserID
from tbl_ssc_User
where ParentUserID in (select PK_UserID from tbl_ssc_User where ParentUserID =1)'
EXEC @SQLStr

acepro | 园豆:1218 (小虾三级) | 2012-07-09 17:01

... 用临时表也是一样的错误提示!

支持(0) 反对(0) jmgy | 园豆:142 (初学一级) | 2012-07-09 18:33

@jmgy: 

@jmgy: 用下面的试试

CREATE TABLE #tempUserTable 
(
PK_UserID INT ,
FK_RoleID INT ,
ParentUserID INT

DECLARE @SQLStr VARCHAR(2222)
SET @SQLStr = 'INSERT INTO #tempUserTable ( PK_UserID, FK_RoleID, ParentUserID )
SELECT PK_UserID, FK_RoleID, ParentUserID
FROM tbl_ssc_User
WHERE ParentUserID IN ( SELECT PK_UserID
FROM tbl_ssc_User
WHERE ParentUserID = 1 )'
EXEC( @SQLStr)

DROP TABLE #tempUserTable

 

--错误有2处:

--1.insert into 写错了

--2 exec(@SQLStr)

支持(1) 反对(0) acepro | 园豆:1218 (小虾三级) | 2012-08-07 19:45
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册