0
DECLARE @myvariable VARCHAR(100)
SET @myvariable = 'mytext'

SELECT Name FROM Customers AS @myvariable

一个人会怎么做呢?

对 Gareth 的回答: 这将允许我在执行以下操作时保留列的原始名称:

declare @myvariable varchar(20)
set @myvariable='Name'

select case @myvariable when 'Name' then Name
                        when 'Id' then Id
       end
          as Name

from Customers

现在,当@myvariable 的值发生变化时,列名不会改变,但我需要它与@myvariable 相同。

4

2 回答 2

2

像这样的东西可以工作

DECLARE @myvariable VARCHAR(100)
SET @myvariable = 'mytext'

DECLARE @sql NVARCHAR(200)

SET @sql = 'SELECT Name AS ' + QUOTENAME(@MyVariable)  + ' FROM Customers'

EXEC sp_executesql @sql
于 2012-05-03T16:58:25.540 回答
0

我想我明白你想问什么,你需要使用的是 PL/SQL,我对你的问题的理解是你想要一个程序,你想输入一个变量名,它输出结果。

SET SERVEROUTPUT ON;

CREATE OR REPLACE PROCEDURE FindCustomer(customerName IN STRING) AS
BEGIN
     SELECT NAME INTO CUSTNAME FROM CUSTOMER WHERE NAME = customerName;
     DBMS_OUTPUT.PUT_LINE(CUSTNAME);         
END FindCustomer;
/
PROMPT 'Input Customer\'s name';
ACCEPT temp;
EXECUTE FindCustomer(&temp);

我不完全确定这是否正确,因为我没有对其进行测试,但是,这是一个 PL/SQL 函数,理论上它将返回您通过键盘或任何输入输入到脚本中的客户名称。如果你想了解更多关于 PL/SQL 我建议你去这里

于 2012-05-03T17:17:39.370 回答