0
我正在尝试使用ADODB来处理包含视图的MS SQL数据库。 MetaColumns()
适用于表格,但在使用视图名称作为参数时返回空数组。进一步的研究表明,$metaColumnsSQL
使用sys.tables
对象来解析列名,所以它看起来并不适用于视图。有没有办法获得视图对象的列名称?MetaColumns()为MS SQL视图?
我正在尝试使用ADODB来处理包含视图的MS SQL数据库。 MetaColumns()
适用于表格,但在使用视图名称作为参数时返回空数组。进一步的研究表明,$metaColumnsSQL
使用sys.tables
对象来解析列名,所以它看起来并不适用于视图。有没有办法获得视图对象的列名称?MetaColumns()为MS SQL视图?
ADOdb无法为视图提供metaColumns()对象,因为它的基础是查询与单个表关联的对象的模式。
可以通过使用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那样详细,但它可能足以满足您的需求。