这个特殊的别名 SQL 列是不是有问题?
Posted
技术标签:
【中文标题】这个特殊的别名 SQL 列是不是有问题?【英文标题】:Is there something problematic about this particular aliased SQL column?这个特殊的别名 SQL 列是否有问题? 【发布时间】:2012-07-10 21:59:33 【问题描述】:为什么在 select 语句中使用别名时会被视为外星人?
我无法想象总是这样,但我不得不更改这段代码:
const string query =
@"SELECT C.PLATYPUSCLIENTID, E.DEWDROPNAME FOGGY
FROM DUCKBILLACCOUNT B,
PLATYPUSCLIENT C,
ENTITY E
WHERE B.DUCKBILLNUMBER = :PLATYPUSACCOUNTID
AND B.DUCKBILLACCOUNTABCID = C.DUCKBILLACCOUNTABCID
AND C.PLATYPUSCLIENTABCID = E.ABCID
ORDER BY FOGGY, PLATYPUSCLIENTID";
try
oc.Open();
using (OracleCommand ocmd = new OracleCommand(query, oc))
ocmd.Parameters.Add("PLATYPUSACCOUNTID", PLATYPUSACCOUNTID);
using (OracleDataReader odr = ocmd.ExecuteReader())
while (odr.Read()) . . .
...到这个:
const string query =
@"SELECT C.PLATYPUSCLIENTID, E.DEWDROPNAME
FROM DUCKBILLACCOUNT B,
PLATYPUSCLIENT C,
ENTITY E
WHERE B.DUCKBILLNUMBER = :PLATYPUSACCOUNTID
AND B.DUCKBILLACCOUNTABCID = C.DUCKBILLACCOUNTABCID
AND C.PLATYPUSCLIENTABCID = E.ABCID
ORDER BY DEWDROPNAME, PLATYPUSCLIENTID";
try
oc.Open();
using (OracleCommand ocmd = new OracleCommand(query, oc))
ocmd.Parameters.Add("PLATYPUSACCOUNTID", PLATYPUSACCOUNTID);
using (OracleDataReader odr = ocmd.ExecuteReader())
while (odr.Read()) . . .
...让它在运行时返回 vals(我在第一个版本中得到“IndexOutOfRangeException”)
【问题讨论】:
您的查询是否在 SQL Developer 中根据需要针对数据库运行?我记得之前需要使用AS
关键字,但我不记得Oracle SQL 引擎是否期望它。
@Jesse:我不知道 SQL Developer 是什么,但它在 TOAD 中运行良好
SQL Developer 是 Oracle 用于数据库管理的 GUI 工具。它类似于 Microsoft 针对 SQL Server 的 SSMS。 oracle.com/technetwork/developer-tools/sql-developer/overview/…
【参考方案1】:
您需要引用别名。
E.DEWDROPNAME 'FOGGY' ...
【讨论】:
以上是关于这个特殊的别名 SQL 列是不是有问题?的主要内容,如果未能解决你的问题,请参考以下文章