我从我的C#代码中构建了一个SQL Server表,从ColumnNames
获取DataTable
,因为它来自我导入的Excel文件。
这很好用;现在我想在不使用动态SQL的情况下使用我在单独的存储过程中创建的SQL表,因为查询相当大,如果我走这条路线将会很难维护。
如果创建Table
参数,我无法指定存储过程中的列,因为它不是静态的列集,这就是我必须从C#代码动态构建表的原因。
所以我基本上想做这样的事情:
CREATE PROCEDURE usp_SprocName
@TableName VARCHAR(50)
AS
SELECT Something FROM Somewhere R
LEFT JOIN
(
SELECT
*
FROM @TableName HR
WHERE Field = Whatever
) HR ON R.Field= HR.Field
但是,我收到错误,在我的子查询中声明了我的@Table
变量。
有没有办法在不使用动态SQL的情况下解决这个问题?