cha*_*har 10 sql-server stored-procedures table-variable
我下面有一个小的存储过程.
我将表名作为存储过程的输入参数,以便我计划将数据插入临时表并显示相同的内容.这只是我项目存储过程的一个很小的代码块.
当我编译下面的内容时,它会将select语句中的参数视为表变量并将错误抛出为:
必须声明表变量"@TableName".
SQL:
CREATE PROCEDURE xyz @TableName Varchar(50)
AS
BEGIN
SELECT TOP 10 * INTO #Temp_Table_One
FROM @TableName
SELECT * FROM #Temp_Table_One
END
Run Code Online (Sandbox Code Playgroud)
M.A*_*Ali 20
CREATE PROCEDURE xyz
@TableName NVARCHAR(128)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @Sql NVARCHAR(MAX);
SET @Sql = N'SELECT TOP 10 * INTO #Temp_Table_One
FROM ' + QUOTENAME(@TableName)
+ N' SELECT * FROM #Temp_Table_One '
EXECUTE sp_executesql @Sql
END
Run Code Online (Sandbox Code Playgroud)
小智 5
使用动态sql
尝试
CREATE PROCEDURE xyz @TableName VARCHAR(50)
AS
BEGIN
DECLARE @query VARCHAR(1000)
set @query = 'SELECT TOP 10 * FROM '+ @TableName
EXEC (@query)
END
Run Code Online (Sandbox Code Playgroud)
添加架构名称。
例如:
exec xyz @TableName = 'dbo.mytable'
exec xyz @TableName = 'myschema.mytable'
| 归档时间: |
|
| 查看次数: |
43141 次 |
| 最近记录: |