{"id":762,"date":"2007-09-20T23:15:00","date_gmt":"2007-09-20T23:15:00","guid":{"rendered":"\/blogs\/bobb\/post\/An-example-of-using-ODBC-and-SQL-Server-2008-table-valued-parameters.aspx"},"modified":"2013-01-04T00:01:22","modified_gmt":"2013-01-04T08:01:22","slug":"an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters","status":"publish","type":"post","link":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/","title":{"rendered":"An example of using ODBC and SQL Server 2008 table-valued parameters"},"content":{"rendered":"<p>\nI&#39;ll be at <a href=\"http:\/\/www.microsoft.com\">TechEd<\/a> and <a href=\"http:\/\/www.microsoft.com\">ITForum<\/a> in Barcelona in November, doing sessions on SQL Server 2005 and SQL Server 2008. One of the TechEd sessions is called &quot;To ODBC or to OLE DB?&quot; and is a discussion of using ODBC and OLE DB is applications these days, whether one or the other is &quot;better&quot;, if you should convert existing applications, etc. On that note&#8230;\n<\/p>\n<p>\nBack at TechEd US, I&#39;d spoken with Chris Lee, who&#39;s in charge of SQL Native Client. That&#39;s the OLE DB provider and ODBC driver that ship with SQL Server. SQL Server 2008 has a new version of the provider and driver, and when I&#39;d asked if support for the new features (like the new DATE\/TIME data types and table-valued parameters) Chris had not only replied &quot;yes&quot;, but given me a demo of using table-valued parameters from ODBC to show off and post if I wanted to.\n<\/p>\n<p>\nHere&#39;s the code. To build and run it:\n<\/p>\n<p>\n1. Use the Visual C++ compiler that comes with Visual Studio 2005 or Visual Studio 2008 beta. I used VS2008 Beta 2.<br \/>\n2. Convert the project if needed. I ignored the warnings about 1 source file not being converted.<br \/>\n3. Make sure that sqlncli.h and sqlncli10.lib are available to the compiler. They&#39;re in C:\\Program Files\\Microsoft SQL Server\\100\\SDK\\Includes and Lib, respectively.<br \/>\n4. Install SQLNCLI from the SQL Server 2008 CTP distibution on the client machine. Just run the SQLNCLI.msi in Servers\\Setup.<br \/>\n5. Setup an ODBC System DSN from Control Panel\/ODBC Administrator named TVPDemo. It must use the SQL Server Native Client 10.0 ODBC driver. Use the database of your choice, the demo will run DDL to create the database objects you need.<br \/>\n6. Compile the demo, set breakpoints and walk through the code\n<\/p>\n<p>\nCheers! See you in Barcelona!\n<\/p>\n<p>\n&nbsp;\n<\/p>\n<p><a href=\"http:\/\/3.209.169.194\/blogs\/bobb\/content\/binary\/odbc%20tvp%20sample%20code1.zip\" class=\"broken_link\">ODBC TVP Sample code1.zip (1008.79 KB)<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>I&#39;ll be at TechEd and ITForum in Barcelona in November, doing sessions on SQL Server 2005 and SQL Server 2008. One of the TechEd sessions is called &quot;To ODBC or to OLE DB?&quot; and is a discussion of using ODBC and OLE DB is applications these days, whether one or the other is &quot;better&quot;, if [&hellip;]<\/p>\n","protected":false},"author":7,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12,29],"tags":[],"class_list":["post-762","post","type-post","status-publish","format-standard","hentry","category-data-access","category-sql-server-2008"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v21.9.1 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>An example of using ODBC and SQL Server 2008 table-valued parameters - Bob Beauchemin<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"An example of using ODBC and SQL Server 2008 table-valued parameters - Bob Beauchemin\" \/>\n<meta property=\"og:description\" content=\"I&#039;ll be at TechEd and ITForum in Barcelona in November, doing sessions on SQL Server 2005 and SQL Server 2008. One of the TechEd sessions is called &quot;To ODBC or to OLE DB?&quot; and is a discussion of using ODBC and OLE DB is applications these days, whether one or the other is &quot;better&quot;, if [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/\" \/>\n<meta property=\"og:site_name\" content=\"Bob Beauchemin\" \/>\n<meta property=\"article:published_time\" content=\"2007-09-20T23:15:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2013-01-04T08:01:22+00:00\" \/>\n<meta name=\"author\" content=\"Bob Beauchemin\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Bob Beauchemin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/\",\"name\":\"An example of using ODBC and SQL Server 2008 table-valued parameters - Bob Beauchemin\",\"isPartOf\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\"},\"datePublished\":\"2007-09-20T23:15:00+00:00\",\"dateModified\":\"2013-01-04T08:01:22+00:00\",\"author\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\"},\"breadcrumb\":{\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Access\",\"item\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/data-access\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"An example of using ODBC and SQL Server 2008 table-valued parameters\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website\",\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/\",\"name\":\"Bob Beauchemin\",\"description\":\"SQL Server Blog\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e\",\"name\":\"Bob Beauchemin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g\",\"caption\":\"Bob Beauchemin\"},\"sameAs\":[\"http:\/www.sqlskills.com\/blogs\/bobb\/\"],\"url\":\"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"An example of using ODBC and SQL Server 2008 table-valued parameters - Bob Beauchemin","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/","og_locale":"en_US","og_type":"article","og_title":"An example of using ODBC and SQL Server 2008 table-valued parameters - Bob Beauchemin","og_description":"I&#39;ll be at TechEd and ITForum in Barcelona in November, doing sessions on SQL Server 2005 and SQL Server 2008. One of the TechEd sessions is called &quot;To ODBC or to OLE DB?&quot; and is a discussion of using ODBC and OLE DB is applications these days, whether one or the other is &quot;better&quot;, if [&hellip;]","og_url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/","og_site_name":"Bob Beauchemin","article_published_time":"2007-09-20T23:15:00+00:00","article_modified_time":"2013-01-04T08:01:22+00:00","author":"Bob Beauchemin","twitter_misc":{"Written by":"Bob Beauchemin","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/","name":"An example of using ODBC and SQL Server 2008 table-valued parameters - Bob Beauchemin","isPartOf":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website"},"datePublished":"2007-09-20T23:15:00+00:00","dateModified":"2013-01-04T08:01:22+00:00","author":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e"},"breadcrumb":{"@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/an-example-of-using-odbc-and-sql-server-2008-table-valued-parameters\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/"},{"@type":"ListItem","position":2,"name":"Data Access","item":"https:\/\/www.sqlskills.com\/blogs\/bobb\/category\/data-access\/"},{"@type":"ListItem","position":3,"name":"An example of using ODBC and SQL Server 2008 table-valued parameters"}]},{"@type":"WebSite","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#website","url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/","name":"Bob Beauchemin","description":"SQL Server Blog","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.sqlskills.com\/blogs\/bobb\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/62bfa986c5b5d28fcffd8b4fc409c73e","name":"Bob Beauchemin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.sqlskills.com\/blogs\/bobb\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/6f80e6cc667410857fa6a21931dc528b8092f4d112bf7a8ff7c267674d44ee37?s=96&d=mm&r=g","caption":"Bob Beauchemin"},"sameAs":["http:\/www.sqlskills.com\/blogs\/bobb\/"],"url":"https:\/\/www.sqlskills.com\/blogs\/bobb\/author\/bobb\/"}]}},"_links":{"self":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/762","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/users\/7"}],"replies":[{"embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/comments?post=762"}],"version-history":[{"count":0,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/posts\/762\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/media?parent=762"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/categories?post=762"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.sqlskills.com\/blogs\/bobb\/wp-json\/wp\/v2\/tags?post=762"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}