2016-05-12 44 views
0

我正在尝试使用ADODB来处理包含视图的MS SQL数据库。 MetaColumns()适用于表格,但在使用视图名称作为参数时返回空数组。进一步的研究表明,$metaColumnsSQL使用sys.tables对象来解析列名,所以它看起来并不适用于视图。有没有办法获得视图对象的列名称?MetaColumns()为MS SQL视图?

回答

0

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那样详细,但它可能足以满足您的需求。