我已创建动态数据集,但我无法继续使用数据集中的parameterName比较。
声明@tableName varchar(100);
选择
[名称]为column1
,[定义]为第2列
,'查看'为column3
来自@tableName
联合所有
SELECT
[DayOfWeek]为column1
,[MonthName]为column2
,'共同'为第3栏
来自@tableName
所以,如果我对tableName进行硬编码,那么这个SQL工作得非常好,但是当我传递参数时,它会中断。另请参阅第3列,此列实际上根据模式名称区分数据集,以便我可以比较结果集(数据集)中的此模式名称,然后基于@tableName参数,我应该只能选择一个数据表
所以,我有两个问题 1.将动态tableName作为参数传递 2.比较where子句中的ParameterName,从动态数据集中选择特定数据。 请帮我。
答案 0 :(得分:0)
您可以尝试使用以下脚本来创建DataSet 声明一个表类型变量&插入结果集..一旦成功,您可以通过添加过滤条件来扩展您的脚本... All all Best!
DECLARE @tableName VARCHAR(100)='Test';
DECLARE @DynamicTable AS Table(column1 VARCHAR(255),column2 VARCHAR(255),column3 VARCHAR(255))
DECLARE @Query AS VARCHAR(MAX)=''
SET @Query='
SELECT [NAME] AS COLUMN1 ,[DEFINITION] AS COLUMN2 ,''VIEW'' AS COLUMN3 FROM ' + @TABLENAME
+
'
UNION ALL
SELECT
[DAYOFWEEK] AS COLUMN1 ,[MONTHNAME] AS COLUMN2 ,''COMMON'' AS COLUMN3
FROM ' + @TABLENAME
--PRINT @Query
Insert Into @DynamicTable
EXEC (@Query)
Select * From @DynamicTable