查询分析器中执行如下代码:
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查询语句
这好像不是什么问题什么新问题,备忘一下吧...
错误都报出来了,仔细检查那个sql语句。
改为这样试试:
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
谢谢,
按您给的参考方式,报的错误还是一样的..
耐心的盘查一下.
@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
... 用临时表也是一样的错误提示!
@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)