-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathresultw.c
65 lines (54 loc) · 1.77 KB
/
resultw.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include "wcs.h"
SQLRETURN SQL_API SQLDescribeColW(
SQLHSTMT hstmt,
SQLUSMALLINT col,
SQLWCHAR *col_name,
SQLSMALLINT col_name_max,
SQLSMALLINT *col_name_len,
SQLSMALLINT *sql_data_type,
SQLULEN *col_size,
SQLSMALLINT *decimal_digits,
SQLSMALLINT *nullable)
{
SQLRETURN ret;
int len;
SQLCHAR *col_name_ansi;
col_name_ansi = malloc(col_name_max);
ret = __SQLDescribeCol(hstmt, col, col_name_ansi, col_name_max - 1, col_name_len, sql_data_type, col_size, decimal_digits, nullable);
if (ret == SQL_SUCCESS) {
len = utf8_to_ucs2(col_name_ansi, col_name, col_name_max * sizeof(SQLWCHAR));
if (len > 0 && col_name_len)
*col_name_len = len - 1;
}
free(col_name_ansi);
__debug("leaves method.");
return ret;
}
SQLRETURN SQL_API SQLColAttributeW(
SQLHSTMT hstmt,
SQLUSMALLINT col,
SQLUSMALLINT field,
SQLPOINTER text_attr,
SQLSMALLINT attr_max,
SQLSMALLINT *attr_len,
SQLLEN *num_attr)
{
int len = 0;
SQLSMALLINT attr_len_ansi;
SQLPOINTER text_ansi = malloc(attr_max + 1);
__debug("enters method.");
SQLRETURN ret = __SQLColAttribute(hstmt, col, field, text_ansi, attr_max, &attr_len_ansi, num_attr);
if (ret == SQL_SUCCESS) {
switch (field) {
case SQL_DESC_NAME:
case SQL_DESC_LABEL:
len = utf8_to_ucs2((SQLCHAR *)text_ansi, (SQLWCHAR *)text_attr, attr_max);
if (len > 0 && attr_len != NULL)
*attr_len = (len - 1) * sizeof(SQLWCHAR);
break;
}
}
free(text_ansi);
__debug("leaves method.");
return ret;
}