我正在尝试使用ADODB来处理包含视图的MS SQL数据库。
MetaColumns()
适用于表,但当我使用视图名作为参数时返回一个空数组。进一步的研究表明,$metaColumnsSQL
使用sys.tables
对象来解析列名,因此它似乎并不适用于视图。有没有办法获取视图对象的列名?
答案 0 :(得分: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那样详细,但它可能足以满足您的需求。