Официальный сайт студ.городка НГТУ
Программирование и БД » Задание и возврат параметров из процедуры SQL(Visual Basic) 

#1  27.11.05 07:22

Задание и возврат параметров из процедуры SQL(Visual Basic)

Имеем процедуру SQL (SP_STUDENT_WORK)

Код: sql:

IF EXISTS (SELECT * FROM dbo.sysobjects WHERE id = object_id(N'[dbo].[SP_STUDENT_WORK]') AND OBJECTPROPERTY(id, N'IsProcedure') = 1)
DROP procedure [dbo].[SP_STUDENT_WORK]
GO
 
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS OFF 
GO
 
--Производит различные действия с работами студента
 
CREATE PROCEDURE SP_STUDENT_WORK
 
(
   @Typ integer,			-- тип действия
					-- 1 - просмотр информации о работах студента
					-- 2 - просмотр информации о конкретной работе студента
					-- 3 - добавление студенту записи о работе 
					-- 4 - изменение данных о работе
					-- 5 - удаление записи о работе
   @UID integer = NULL,			-- Идентификатор записи
   @Stud integer =NULL ,		-- Студент
   @Work integer = NULL,		-- Работа
   @DT1 datetime = NULL,		-- Дата начала работы
   @DT2 datetime = NULL,		-- Дата окончания работы
   @Comment varchar(200) = NULL	-- Примечание
)
 
AS
 
IF (@Typ = 4 OR @Typ = 3) AND @DT1 IS NULL 
   BEGIN
	RAISERROR (50101, 16,1)	
	RETURN
    END
 
IF @Typ = 1
   SELECT  NameWork, DT1,DT2,Comment FROM StudWork s INNER JOIN TypWork w
	ON s.WorkID=w.WorkID
 
IF @Typ = 2
   SELECT  NameWork, DT1,DT2,Comment FROM StudWork s INNER JOIN TypWork w
	ON s.WorkID=w.WorkID
	WHERE UID = @UID
 
IF @Typ = 3
BEGIN
   INSERT INTO StudWork (StudZach, WorkID, DT1, DT2, Comment)
   VALUES (@Stud, @Work, @DT1, @DT2, @Comment)   
END
 
IF @Typ = 4
   UPDATE StudWork SET StudZach = @Stud, WorkID = @Work, DT1 = @DT1,  DT2 = @DT2, Comment = @Comment WHERE UID = @UID
 
IF @Typ = 5
   DELETE FROM StudWork WHERE UID = @UID
GO
SET QUOTED_IDENTIFIER OFF 
GO
SET ANSI_NULLS ON 
GO
 


Как видно из кода выпoлнение процедуры зависит от переданных в неё значений парметра Typ
Вопрос как на VB.net сформировать запрос на исполнение этой процедуры с нужным мне параметром, и самое главное как получить возращаемые процедурой значения...?
Предполагаю что передать в процедуру параметры можно так

Код: VB.net:

 
 
With OleDbCommand1
            Command1 = New ADODB.Command
            Command1.ActiveConnection = cn
            Command1.CommandText = "SP_STUDENT_WORK"
            Command1.CommandType = System.Data.CommandType.StoredProcedure
            param = Command1.CreateParameter("@typ", ADODB.DataTypeEnum.adVarChar, ADODB.ParameterDirectionEnum.adParamReturnValue, 3)
            Command1.Parameters.Append(param)
 
        End With
        OleDbConnection1.Open()
        OleDbCommand1.ExecuteNonQuery() 'Вот тут прога подвисает     
   OleDbConnection1.Close()


Но у меня программа подвисает как только доходит до OleDbCommand1.ExecuteNonQuery()   с сообщением Additional information: ExecuteNonQuery: Connection property has not been initialized.

А как получить параметры от процедуры я вообще ума не приложу :(

Исправлено eagle (27.11.05 08:41)

Offline

#2  27.11.05 11:12

Re: Задание и возврат параметров из процедуры SQL(Visual Basic)

Не смешивай красное с круглым :) т.е. ADO.NET и ADO
И, кстати, если ты работаешь с MS SQL Server то лучше использовать специализированного поставщика из System.Data.SqlClient namespace.
Вот пример кода:

Код: 'csharp':

using(SqlConnection lSqlConnection = new SqlConnection(cConnectionString))
{
	SqlCommand lSqlCommand = lSqlConnection.CreateCommand();
	lSqlCommand.CommandTimeout = 36000; //10 hours
	lSqlCommand.CommandType = CommandType.StoredProcedure;
	lSqlCommand.CommandText = "sp_MoveToSADB_ARCHIVE";
	SqlParameter lSqlParameter;
	lSqlParameter = lSqlCommand.Parameters.Add("@Year", SqlDbType.SmallInt, 2, "Year");
	lSqlParameter.Value = pYear;
	lSqlParameter = lSqlCommand.Parameters.Add("@Month", SqlDbType.TinyInt, 1, "Month");
	lSqlParameter.Value = pMonth;
	lSqlConnection.Open();
	lSqlCommand.ExecuteNonQuery();
}

Исправлено Logos (27.11.05 11:34)

Offline

#3  27.11.05 11:44

Re: Задание и возврат параметров из процедуры SQL(Visual Basic)

:) Странно на сайте говорирось что это для ADO.net ...обманули..)
теперь бы ещё переделать это под VB.. Химик где ты?))
Спасибо! :)

Исправлено eagle (27.11.05 11:45)

Offline

Программирование и БД » Задание и возврат параметров из процедуры SQL(Visual Basic) 

ФутЕр:)

© Hostel Web Group, 2002-2025.   Сообщить об ошибке

Сгенерировано за 0.428 сек.
Выполнено 11 запросов.