1

我有 2 张桌子。在table1我有一些这样的人行:

  1. PersonX - 身份证
  2. PersonX - 姓名
  3. PersonX - 地址
  4. PersonY - ID
  5. 人物 - 年龄

在第二张表中,上面提到的ID, NAME,ADDRESS,AGE将是列。我们这里有 personX 和 PersonY 的详细数据。

现在,主要问题是在存储过程中,使用游标,我将table1值('ID', 'Name', ...)存储在变量@Element中。

现在我在同一个游标中使用 select 语句,如下所示:

SELECT @Element From Table2

我需要输出用户详细信息,例如他的 id、年龄、地址等。但是我得到的输出是'ID', 'NAME', 'AGE'等....

我发现这是因为@Elementisvarchar并且有字符串值,所以 select 语句执行如下:

SELECT 'ID' from table2. 

但我需要的只是下面

SELECT ID FROM TABLE2

我使用了替换功能,它对我不起作用。案例功能,我不能使用它,因为我们不能说出一个人在table1. 它因人而异。我需要一个可用于所有记录的动态语句。而不是为每条记录执行案例。

SELECT REPLACE(@Element,'''','') 
FROM TABLE2 

(仍然得到'ID'作为输出,而不是表2中的对应值)

请帮助我。希望你明白我的解释

4

1 回答 1

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 而言,您的变量只是存储一个值。它不知道您指的是列名,这就是它仅返回值的原因。

于 2013-06-21T09:01:56.527 回答