存储过程的动态参数

时间:2013-11-29 18:23:56

标签: sql-server stored-procedures

我有一个存储中间表名称和表格的表格。列级别列出的每个主表的最终表。我试图编写一个存储过程,它将接受参数 - 主表名,并给结果返回中间表名。 然后下面的查询应该从中间表中选择几列(第一次查询的结果)任何帮助都会很棒!

我已经解决了第一部分,但第二部分是一个问题:

ALTER PROCEDURE [dbo].[p_dataselect] 

(  
 @MainTable  varchar(20) 
)  
AS
EXEC ('SELECT @ITable =im_table from' +@MainTable)
EXEC ('SELECT * from dbo.' +@ITABLE)

- 这不起作用。

2 个答案:

答案 0 :(得分:0)

您的@ITable变量,即SELECT - 在第一个EXEC中,未在存储过程中声明。因此,无法在第二个EXEC语句中访问它。

答案 1 :(得分:0)

EXEC(来自'+ @ MainTable''SELECT @ITable = im_table) EXEC('SELECT * from dbo。'+ @ ITABLE)

两个单独的查询和第一个声明的变量@ITABLE不适用于第二个。

您可以尝试使用第一个查询作为第二个查询的子查询在唯一查询中对其进行转换。

警告:一般情况下使用这样的动态查询是一个坏主意,尽量避免使用或至少了解动态参数查询。