Ok, I don't have any perl/DBI experience but when I use the Microsoft ODBC test tools provided in their SDK I get the NVARCHAR columns reported back as such,
select n'THIS IS A UNICODE STRING' uc, 'this is an ASCII string' nc from dummy
No Descriptor Record Fields Available
Descriptor: 0x00E12A18 (hdbc 1, hstmt 1)"Implicit IRD"
Header:
Record: #1
SQL_DESC_BASE_COLUMN_NAME:"UC"
SQL_DESC_BASE_TABLE_NAME:"UC"
SQL_DESC_CONCISE_TYPE:-9
SQL_DESC_DISPLAY_SIZE:24
SQL_DESC_LABEL:"UC"
SQL_DESC_LENGTH:24
SQL_DESC_NAME:"UC"
SQL_DESC_TYPE:0
SQL_DESC_TYPE_NAME:"NVARCHAR"
Record: #2
SQL_DESC_BASE_COLUMN_NAME:"NC"
SQL_DESC_BASE_TABLE_NAME:"NC"
SQL_DESC_CASE_SENSITIVE:1
SQL_DESC_CONCISE_TYPE:12
SQL_DESC_DISPLAY_SIZE:23
SQL_DESC_LABEL:"NC"
SQL_DESC_LENGTH:23
SQL_DESC_NAME:"NC"
SQL_DESC_TYPE:0
SQL_DESC_TYPE_NAME:"VARCHAR"
And this is really where my understanding ends. If I got the ODBC reference docu right, then the SQL_DESC_CONCISE_TYPE should be used to determine the target C types.
I really don't do ODBC programming, perl or DBI, so this is where I have to point to SAP HANA support again...