我有2张桌子。在table1
我有这样的行:
在第二个表格中,上面提到的ID, NAME,ADDRESS,AGE
将是列。我们在这里有详细的personX和PersonY数据。
现在,主要问题在于存储过程,使用游标,我将table1
值('ID', 'Name', ...
)存储在变量@Element
中。
现在我在同一个游标中使用select语句如下:
SELECT @Element From Table2
我需要输出用户详细信息,例如他的ID,年龄,地址等。但我得到输出为'ID', 'NAME', 'AGE'
等....
我发现这是因为@Element
是varchar
并且有字符串值,所以select语句执行如下:
SELECT 'ID' from table2.
但我需要的只是下面的
SELECT ID FROM TABLE2
我使用替换功能它不适合我。案例功能,我无法使用它,因为我们无法说明table1
中某人的数据。它有所不同。我需要一个可用于所有记录的动态语句。而不是为每条记录执行案例。
SELECT REPLACE(@Element,'''','')
FROM TABLE2
(仍然将'ID'作为输出,而不是表2中的相应值)
请帮帮我。希望你理解我的解释
答案 0 :(得分:0)
您需要使用动态SQL来实现此目的,例如:
CREATE TABLE Table1
(
ID INT
,Name VARCHAR(255)
,ADDRESS VARCHAR(255)
)
INSERT Table1 VALUES ('1','Joe Bloggs','Address 1')
INSERT Table1 VALUES ('2','Jane Doe','Address 2')
DECLARE @ColName VARCHAR(255) = 'ID'
DECLARE @SQL VARCHAR(MAX)
SET @SQL = 'SELECT '+@ColName+','+''''+@ColName+''' FROM TABLE1'
EXEC (@SQL)
在返回的第一列中,是您希望能够执行的SQL,但是在我的查询的第二列中,您正在执行的操作。就SQL而言,您的变量只是存储一个值。它不知道你指的是一个列名,这就是为什么它只返回值。