2014-12-05 2 views
0

Я работаю на # проекта asp.net C, которые подключаются к базе данных SQL (MySQL 2008) .Здесь мой C# Класс:Отправить строку параметров для хранимых процедур

public static DataTable GetUnitByName(string unit) 
    { 
     Database db = DatabaseFactory.CreateDatabase(); 
     string sqlCommand = "GetUnitByName"; 
     DbCommand dbCommandWrapper = db.GetStoredProcCommand(sqlCommand); 
     db.AddInParameter(dbCommandWrapper, "@Unit", DbType.String, unit); 
     DataSet ds = db.ExecuteDataSet(dbCommandWrapper); 
     DataTable dt = ds.Tables[0]; 
     return dt; 
    } 

И вот хранимая процедура:

alter PROCEDURE [dbo].[GetUnitByName] 
(
@Unit nvarchar 
) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON 
    DECLARE @Err int 
    -- Insert statements for procedure here 
select * from Unit where [email protected] 
    SET @Err = @@Error 

    RETURN @Err 
END 

я вызвать процедуру Как это: DataTable блок1 = Unit.GetUnitByName (per100gText [1] enter code here); , поскольку per10gText является строковым списком. , но он возвращает пустой тип данных. подключение к серверу sql, при отладке я вижу, что процедура не может прочитать параметр. Любая помощь Пожалуйста.

ответ

0

, если вы хотите, чтобы вернуться прок параметров вам нужно сначала объявить его как выход пары

alter PROCEDURE [dbo].[GetUnitByName] 
(
@Unit nvarchar , @err int output 
) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON 

    -- Insert statements for procedure here 
select * from Unit where [email protected] 
    SET @Err = @@Error 

    RETURN @Err 
END 
+0

Я не использую код SQL часто, вы можете объяснить больше о функции? и вернуть значение напрямую с помощью sql и C#? – alim91

+0

Я не знаю, C# - :(прочитайте это о proc и func: http: //stackoverflow.com/questions/1179758/function-vs-stored-procedure-in-sql-server –

+0

ok спасибо вам, dudi. – alim91