Re: Table-Valued Parameters to MS SQL Server stored procedure

Jürgen Wenzel <[email protected]>
Newsgroups gmane.comp.lang.perl.modules.dbi.general
Message-ID <[email protected]>
It appears as if Microsoft SQL Server Native Client 10 and 11 have 
support for this in their ODBC implementation. At least according to 
http://technet.microsoft.com/en-us/library/bb522663(v=sql.105).aspx 
<http://technet.microsoft.com/en-us/library/bb522663%28v=sql.105%29.aspx> The 
second half of http://www.codemag.com/article/0712172 discusses an 
implementation of TVPs in ODBC in general, which might be relevant.

I've tried to call a stored procedure with a TVP in the way I think 
makes the most sense: using a bound array ref (where the actual rows has 
been both hash refs and array refs) but got the error

[DBD::ODBC:st bind_param failed: [Microsoft][SQL Server Native Client 
11.0] Restricted data type attribute violation (SQL-07006)

which, if I've understood what I've managed to google properly, means 
that it can't convert my array ref into the specific TVP type. (Perhaps 
it could also have something to do with the READONLY declaration in the 
stored procedure.)


Using temporary tables, or any other database workaround, isn't an 
option for me, so unless there's a way to use TVPs with stored 
procedures I'll probably have to abandon Perl (which, except for being 
extremely sad for me and very satisfying for the non-Perl believers, 
will be extremely time consuming).

JW


On 2013-12-30 11:14, Martin J. Evans wrote:
> On 29/12/2013 22:20, Jürgen Wenzel wrote:
>> Hello,
>>
>> I'm adapting a Windows perl program to work with a new MS SQL Server
>> database and it involves making calls to stored procedures that takes
>> Table-Valued Parameters. Is this possible with DBD::ODBC or any other
>> DBI? Or at all with (strawberry) perl?
>>
>> Would really appreciate some help -- answers and perhaps even a short
>> example -- since trying to figure this out is really starting to wear on
>> me.
>>
>> Thanks in advance!
>>
>> JW
>>
>> .
>>
>
> I don't believe you can do that with DBD::ODBC. In fact, I don't think 
> you can even do that with ODBC (if you know different and can point me 
> at it I'll take a look). The traditional way around this is to use 
> temporary tables.
>
> Martin
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.