2013-05-10 4 views
1

친애하는 지능 internets의 사람들,SQLSRV_FIELD_METADATA를 사용하면 VARCHAR 또는 INT와 같은 전체 이름 데이터 형식을 반환 할 수 있습니까? SQL 서버 2000 SQLSRV를 사용

나는 열 데이터 유형을 에코려고하고 SQLSRV_FIELD_METADATA 기능 만 숫자 데이터 유형을 나타내는 전달을 사용하여 길이. 로 12 : 4 유형 :

Name: UNITID 
Type: 4 
Size: 
Precision: 10 
Scale: 
Nullable: 0 

Name: STOCKNUMBER 
Type: 12 
Size: 30 
Precision: 
Scale: 
Nullable: 1 

이 형식을 변환하는 방법이 있나요 :

다음
echo '<pre>'; 
    echo '<ul>'; 
    foreach(sqlsrv_field_metadata($stmt) as $fieldMetadata) { 
     foreach($fieldMetadata as $name => $value) { 
      echo "<li>$name: $value</li>"; 
     } 
     echo "<br/>"; 
    } 
    echo '</ul>'; 
    echo '</pre>'; 

출력의 조각입니다 : 여기

코드입니다 열의 실제 이름? 대신 Type : INT 및 Type : VARCHAR을 리턴합니다.

도움 주셔서 감사합니다.

+2

당신은 당신의 자신의 형태 맵을 구현할 수 : 나는 제안 형태 맵 역할을하는 기능을 구현했습니다. [다음은 MSDN의 값 목록입니다 (http://msdn.microsoft.com/en-us/library/ms136906%28v=sql.90%29.aspx). –

+0

값 목록에 2 개의 중복이 있습니다. 즉 -2와 3은 모두 두 가지 설명을 갖습니다 - 어떤 아이디어입니까? – Graham

답변

2

@Esorteric, 팁 주셔서 감사합니다.

function returnType($value) { 
    switch ($value) { 
     case 4: 
      return "(4) SQLDMO_DTypeInt4 :: Signed integer data. The width of the integer is four bytes."; 
      break; 
     case 12: 
      return "(12) SQLDMO_DTypeVarchar :: Variable-length character data."; 
      break; 
     case 93: 
      return "(93) SQLDMO_DTypeDateTime4 :: ODBC SQL_TIMESTAMP_STRUCT."; 
      break; 
     case 5: 
      return "(5) SQLDMO_DTypeInt2 :: Signed integer data. The width of the integer is two bytes."; 
      break; 
     case -6: 
      return "(-6) SQLDMO_DTypeInt1 :: Unsigned integer data. The width of the integer is one byte."; 
      break; 
     case -1: 
      return "(-1) SQLDMO_DTypeText :: Long, variable-length character data."; 
      break;      
    }  

    }