SQL Server insert based on the execution results of a stored procedure
本问题已经有最佳答案,请猛点这里访问。
我有一个有两列的表变量。第一列是我在执行存储过程填充第二个值时尝试填充的值。
1 2 3 4 5 6 7 8 9 10 11 | 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 |
但是,每当我尝试执行存储过程时,都会收到此错误:
Level 15, State 1, Procedure userProfiles, Line 9
[Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'userprofile'.
号
任何帮助都将不胜感激。
提前谢谢
可能你的
请参见:SQL Server-从存储过程中选择
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | 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 |
缺少值。另外,考虑使用out参数从过程中获取值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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参数。
下面是一个关于
我猜你需要用分号来结束你的陈述。
声明@local_变量(Transact-SQL)
1 2 3 4 5 | DECLARE @MyTableVar TABLE( EmpID INT NOT NULL, OldVacationHours INT, NewVacationHours INT, ModifiedDate datetime); |