我有一个包含两列的表变量。第一列是我试图填充的值,而第二个值是由执行存储过程填充的。
CREATE PROCEDURE [dbo].userProfiles
(@userID INT) AS
BEGIN
DECLARE @sampleTable TABLE (moduleName VARCHAR(20),
userProfile int)
INSERT INTO @sampleTable('userprofile', exec getUserProfile(@userID))
SELECT *
FROM @sampleTable
END
但是,每当我尝试执行存储过程时,我都会收到此错误:
15级,状态1,程序userProfiles,第9行
[Microsoft] [ODBC SQL Server驱动程序] [SQL Server]&user;用户配置文件'附近的语法不正确。
任何帮助都将受到赞赏。
提前致谢
答案 0 :(得分:2)
可能您的SP
确实有select
声明,
请参阅:SQL Server - SELECT FROM stored procedure
CREATE PROCEDURE [dbo].userProfiles(
@userID INT
) AS
BEGIN
DECLARE @sampleTable TABLE (
moduleName VARCHAR(20),
userProfile int
)
DECLARE @stored_proc_table TABLE (
clmn datatype --similar as result set from getUserProfile
)
insert into @stored_proc_table exec getUserProfile(@userID)
INSERT INTO @sampleTable
select 'userprofile', clmn from @stored_proc_table;
SELECT * FROM @sampleTable
END
答案 1 :(得分:0)
我的猜测是你需要以分号;
DECLARE @local_variable (Transact-SQL)
DECLARE @MyTableVar table(
EmpID int NOT NULL,
OldVacationHours int,
NewVacationHours int,
ModifiedDate datetime);
答案 2 :(得分:0)
缺少价值观。另外,考虑使用out参数从程序中获取值。
CREATE PROCEDURE [dbo].userProfiles(
@userID INT) AS
BEGIN
DECLARE @sampleTable TABLE(
moduleName VARCHAR(20),
userProfile int)
Create table #valueholder(resultvalue int)
insert into #valueholder exec getUserProfile(@userID)
INSERT
INTO @sampleTable
select 'userprofile',resultvalue from #valueholder
SELECT *
FROM @sampleTable
END
此外,您无法对过程进行内联调用。使用参数。
这是关于out
param的示例。
https://technet.microsoft.com/en-us/library/ms187004(v=sql.105).aspx