Dans mon projet, nous utilisons Dapper pour se connecter à la base de données pour les opérations.Transférer un paramètre table à une procédure stockée
J'ai créé une procédure stockée dans ma base de données SQL Server en tant que:
CREATE PROCEDURE dbo.usp_Check
@TestTableType [dbo].[TestTableType] READONLY
AS
BEGIN
SELECT
TestTableType.BrokerNPN,
CASE WHEN Sales.BrokerNPN IS NULL THEN 0 ELSE 1 END as isBrokerNPNExist
FROM
[dbo].[tbl_Sales] Sales
LEFT JOIN
@TestTableType TestTableType ON Sales.BrokerNPN = TestTableType.BrokerNPN
END
Et en C# Je suis en train de consommer ma procédure stockée avec un PVT comme celui-ci:
public void CheckSP(List<string> ParamData)
{
using (var connection = new ConnectionProvider("DbName").GetOpenConnection())
{
var dt = new DataTable("dbo.TestTableType");
dt.Columns.Add("NPN", typeof(string));
dt.Rows.Add("12345");
// First attempt
var result = connection.Query<CheckData>("usp_Check", new { BrokerNPN = ParamData }, CommandType.StoredProcedure).ToList();
// Second attempt
var result = connection.Query<CheckData>("usp_Check", new { BrokerNPN = dt}, CommandType.StoredProcedure).ToList();
}
}
Mais je ne suis pas en mesure de passer le TVP à la procédure stockée.
Pour la première tentative, je reçois cette erreur
Procédure ou CheckBrokerNPNExist fonction a trop d'arguments spécifiés
Et pour la deuxième tentative, je ne peux pas utiliser passe DataTable
directement.
Quelle erreur se lors de l'exécution? Votre code semble éligible, il devrait exécuter la requête de procédure stockée. –
Vous créez 'DataTable', mais ne l'utilisez pas – Fabio
@TetsuyaYamamoto J'ai ajouté un autre moyen que j'ai essayé d'utiliser TVP en utilisant DataTable. – Rahul