J'essaie d'exécuter un proc stocké SQL à partir de Visual Studio 2008 qui prend un paramètre UDT table comme une entrée. J'ai ajouté ce paramètre dans Visual Studio 2008 mais lorsque j'exécute ce programme, il obtient un "ArgumentException - Type spécifié n'est pas enregistré sur le serveur cible." J'ai donc googlé ce problème et pense que je dois créer une nouvelle classe dans Visual Studio 2008 correspondant aux propriétés de ce type de table à partir de SQL Server 2008. Mais je ne trouve aucun exemple sur Internet impliquant table UDT. Et j'ai essayé tous les exemples scalaires UDT, mais je n'étais pas sûr de savoir comment les modifier pour les rendre basés sur des tables. J'ai également lu que je peux avoir besoin de créer un assembly, bien que je ne sais pas si cela est requis uniquement pour importer un type dans SQL Server 2008 ou s'il peut également être utilisé pour importer un type dans Visual Studio. BTW, je ne vois aucun type répertorié à partir de l'Explorateur de serveur dans VS 2008, bien que je vois la base de données et ses SP. J'ai essayé d'actualiser la base de données, mais les types n'étaient toujours pas visibles. Ce que je dois faire est simple. J'ai un UDT de table comme ceci:sql table udt, vs 2008, csharp
CREATE TYPE [dbo].[parseInputFile] AS TABLE(
[NumCols] [int] IDENTITY(1,1) NOT NULL,
[strRow] [varchar](500) NOT NULL,
PRIMARY KEY CLUSTERED
Et l'extrait de code de mon code C# est:
public static int AppendData(string[] myStringArray)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "dbo.uspAppendTableFromInput";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Connection = conn;
SqlParameter param = cmd.Parameters.Add("@InputFileParam", SqlDbType.Udt);
param.UdtTypeName = "AdventureWorks.dbo.parseInputFile";
param.Value = myStringArray;
conn.Open();
RowsAffected = cmd.ExecuteNonQuery();
rowsAffected montrent zéro lignes affectées après l'exécution de cela. Qu'est-ce que je rate? Pouvez-vous me montrer un site Web qui montre un exemple simple de ceci. Ou me donner un pourboire? J'ai aussi essayé 'param.UdtTypeName = "parseInputFile";' pour l'extrait ci-dessus, mais cela a renvoyé la même erreur. BTW, "myStringArray" est essentiellement une table. C'est une série de cordes. par exemple. myStringArray [0] = "Bonjour | Bob | Comment | Faire", myStringArray [1] = "I | Am | Fin | Et", etc.
exemple @ http://stackoverflow.com/questions/337704/parameterizing-a-sql-in-clause/337864#337864 – ahains
A quoi ressemble votre proc stocké comme? Principalement la liste des paramètres que vous avez déclarés –
Et qu'essayez-vous exactement d'accomplir? Appeler le proc stocké avec un ensemble de paramètres dans le type de table défini par l'utilisateur? Ou appelez le proc stocké pour obtenir une telle table RETURNED ?? Pas tout à fait clair ... –