Comment obtenir une Chaîne SQL Résultat de la Procédure Stockée et l'enregistrer dans l'Application Windows en C# variable de chaîne
J'ai de la Procédure Stockée suivante :
ALTER PROCEDURE [dbo].[ProcedureName]
@date NVARCHAR(50)
AS
BEGIN
SET NOCOUNT ON;
DECLARE @result nvarchar(500) -- this one should return string.
DECLARE @variable1 NVARCHAR(50)
set @variable1 = (SELECT COUNT(*) FROM dbo.Table1 WHERE column1 not in (select column1 from dbo.Table2))
DECLARE @variable2 NVARCHAR(50)
update dbo.Table1 set columnX = 1 where column1 not in (select column1 from dbo.Table2)
set @variable2 = @@ROWCOUNT
et ainsi de suite... ça continue comme ça les 200 lignes de script avec au moins 10-12 variables
après que je veux obtenir un résultat de ce genre,
'Hello,' +
'Some Text here' +
@date +': ' +
'Explaining text for variable1- ' + @variable1 +
'Updated rows from variable2 - ' + @variable2 +
'some other select count - ' + @variable3 +
'some other update rowcount - '+ @variable4
......
jusqu'à maintenant, j'ai pu obtenir avec Instruction d'IMPRESSION, mais ne peut pas le prendre pour variable dans mon code C# qui va comme ceci:
public void Execute_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Are you sure you want to execute the program?", "Confirm Start", MessageBoxButtons.YesNo, MessageBoxIcon.Question) != DialogResult.No)
{
string connectionString = GetConnectionString(usernamePicker.Text, passwordPicker.Text);
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand("dbo.ProcedureName", connection))
{
connection.Open();
cmd.CommandText = "dbo.ProcedureName";
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@date", SqlDbType.VarChar).Value = dateTimePicker1.Text;
SqlParameter result = cmd.Parameters.Add("@result", SqlDbType.VarChar);
result.Direction = ParameterDirection.ReturnValue;
cmd.ExecuteScalar();
var resultout = (string)cmd.Parameters["@result"].Value;
connection.Close();
TextMessage.Text = dateTimePicker1.Text;
}
}
}
}
tout ce que j'obtiens le résultat est 0 ou NULL ou etc.
j'ai essayé de valeur de retour à partir de SQL avec IMPRESSION, de RENDEMENT, de l'ENSEMBLE de SORTIE ....... mais rien ne semble fonctionner. Cependant l'extraction de variable à partir de C# SQL semble être de l'enfant. Des idées?
Êtes-vous sélectionner à la fin de votre procédure pour renvoyer la valeur?
Vous pouvez utiliser la variable de Sortie pour affecter les valeurs de plusieurs variables
Jetez un oeil sur Entrée/Sortie, paramètres et Valeur de Retour Avez-vous retourner quelque chose à placer dans le @result paramètre?
je suis l'attribution finale de la chaîne de caractères "Bonjour" + ....... pour un résultat variable, mais je ne sais pas comment sortie comme une sorte de message de la procédure
Vous pouvez utiliser la variable de Sortie pour affecter les valeurs de plusieurs variables
Jetez un oeil sur Entrée/Sortie, paramètres et Valeur de Retour Avez-vous retourner quelque chose à placer dans le @result paramètre?
je suis l'attribution finale de la chaîne de caractères "Bonjour" + ....... pour un résultat variable, mais je ne sais pas comment sortie comme une sorte de message de la procédure
OriginalL'auteur user2384855 | 2013-05-15
Vous devez vous connecter pour publier un commentaire.
Si vous voulez retourner à la concaténation de chaîne en sortie puis à la fin de la procédure, il suffit d'écrire
select @result
. Assurez-vous que vous avez concaténées avant cette déclaration.Cela vous renvoie la chaîne de caractères que vous pouvez utiliser dans votre code c# comme une chaîne de caractères.
essayez string str=cmd.ExecuteScalar(); Vous n'avez pas besoin d'accéder au paramètre de sortie.
vous pouvez supprimer les paramètres de sortie de votre SP. Ce magasin de la procédure de retourner directement vous la chaîne.
string str = (string)cmd.ExecuteScalar(); qui a fait tout le travail, je vous remercie beaucoup. J'ai été coincé à ce point pour deux jours ....
OriginalL'auteur Bhushan
Modifier votre procédure stockée:
et modifier votre code comme ceci:
Ce qui se passe lors de la procédure doit
@result
comme paramètre, mais dans votre requête et mine de rien il y a pas si, certainement, cela ne devrait pas arriver! Vérifiez votre requête et supprimer@result
si il n'est pas nécessaire, ou de modifier votre post avec le réel en direct de la requête, s'il vous plaît 🙂OriginalL'auteur gzaxx
ok permet de dire que j'ai fait cette procédure
je veux "@" résultat à la sortie du texte à partir de la procédure et de l'obtenir avec C#
OriginalL'auteur user2384855