Dapper icon indicating copy to clipboard operation
Dapper copied to clipboard

Pass C# array to UDTF in Snowflake as an array

Open vyeghikyan-st opened this issue 1 year ago • 0 comments

I have a parameter in C#

var selectedUsersIds = new long[]{1,2,3};

which I want to pass to a UDTF in Snowflake:

CREATE OR REPLACE FUNCTION GetUserInfo  ( pselectedUsersIds ARRAY)
  RETURNS TABLE ( 
  "Username" VARCHAR(1000), 
  "Age" NUMBER(38,0))
...

My sql query reads

SELECT * FROM TABLE(GetUserInfo(:SelectedUsers))

When I pass it via a DynamicParameters object

 var dynamicParams = new DynamicParameters();
 dynamicParams.Add("SelectedUsers", selectedUsersIds, (DbType?)null);

I get an error from Snowflake, saying that

Invalid argument types for function 'GetUserInfo': ( ROW(NUMBER(10,0), ROW(NUMBER(10,0), NUMBER(10,0))))

Is there a way to pass the C# array as a Snowflake array?

vyeghikyan-st avatar Apr 29 '24 10:04 vyeghikyan-st