我正在尝试使用 ADODB 来处理包含视图的 MS SQL 数据库。
MetaColumns()
适用于表,但当我使用视图名称作为参数时返回一个空数组。进一步的研究表明,$metaColumnsSQL
使用sys.tables
对象来解析列名,因此它似乎不适用于视图。有没有办法获取视图对象的列名?
问问题
100 次
1 回答
0
ADOdb 不能为视图提供 metaColumns() 对象,因为它的基础是查询与单个表关联的对象的架构。
您可以使用 NorthWind 使用fetchField()方法在视图中模拟 metaColumns(),如下所示:
$SQL = " CREATE VIEW vEmpTerritories AS
SELECT employees.employeeId, EmployeeTerritories.TerritoryId
FROM employees, EmployeeTerritories
WHERE EmployeeTerritories.employeeId = employees.employeeId";
$db->execute($SQL);
$SQL = "SELECT * FROM vEmpTerritories";
$f = $db->execute($SQL);
$recordSet = $db->Execute($SQL);
$cols = $recordSet->fieldCount();
for($i=0;$i<$cols;$i++){
$fld = $recordSet->FetchField($i);
print_r($fld);
}
这将返回一个 ADOfieldObjects 数组,其中包含有关每列的基本信息:
ADOFieldObject Object
(
[name] => employeeId
[max_length] =>
[type] => int
[column_source] => employeeId
)
ADOFieldObject Object
(
[name] => TerritoryId
[max_length] => 20
[type] => nvarchar
[column_source] => TerritoryId
)
不幸的是,从 fetchfield() 返回的数据不如从 metaColumns 详细,但它可能足以满足您的需求。
于 2016-05-24T23:31:09.610 回答