从客户中选择名称为@myvariable // sql中的动态AS

时间:2012-05-03 16:52:06

标签: sql select

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的值发生变化时,colum名称不会,但我需要它与@myvariable相同。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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的更多信息,我建议您转到here