Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 ХР с выходным параметром  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Подскажите как правильно написать ХР с output параметром, то есть я делаю счетчик и мне нужно вернуть в мою программу уже значение после его изменения, но я так понял что то что я пишу не правильно

Пробую так

CREATE PROCEDURE [Test]
  @id bigint,
  @idUser bigint
as
begin
   update [Table] set [calls]=[calls]+1 where [id]=@id and [idUser]=@idUser

  Declare @count bigint output
  set @count = [calls]
end


Спасибо
19 апр 13, 10:30    [14202066]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
pkarklin
Member

Откуда: Москва (Муром)
Сообщений: 74930
BOL->CREATE PROCEDURE->Example E
19 апр 13, 10:33    [14202081]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
VIT2708,

CREATE PROCEDURE [Test]
  @id bigint,
  @idUser bigintб
  @count bigint output
as
begin
   update [Table] set [calls]=[calls]+1 where [id]=@id and [idUser]=@idUser

  set @count =@@ROWCOUNT
end


если я правильно понял,чтио вы хотите вернуть
19 апр 13, 10:34    [14202091]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Knyazev Alexey
Member

Откуда: Екб -> Мск
Сообщений: 10233
Блог
http://msdn.microsoft.com/ru-ru/library/ms187926.aspx

Передача параметров

В. Использование выходных параметров (OUTPUT)

В следующем примере создается процедура uspGetList.
Эта процедура возвращает список товаров, цена на которые не превышает указанный предел.
Данный пример поясняет использование нескольких инструкций SELECT и нескольких параметров OUTPUT.
Параметры OUTPUT предоставляют внешней процедуре, пакету или нескольким инструкциям Transact-SQL доступ к значениям, заданным во время выполнения процедуры.


USE AdventureWorks2012;
GO
IF OBJECT_ID ( 'Production.uspGetList', 'P' ) IS NOT NULL 
    DROP PROCEDURE Production.uspGetList;
GO
CREATE PROCEDURE Production.uspGetList @Product varchar(40) 
    , @MaxPrice money 
    , @ComparePrice money OUTPUT
    , @ListPrice money OUT
AS
    SET NOCOUNT ON;
    SELECT p.[Name] AS Product, p.ListPrice AS 'List Price'
    FROM Production.Product AS p
    JOIN Production.ProductSubcategory AS s 
      ON p.ProductSubcategoryID = s.ProductSubcategoryID
    WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice;
-- Populate the output variable @ListPprice.
SET @ListPrice = (SELECT MAX(p.ListPrice)
        FROM Production.Product AS p
        JOIN  Production.ProductSubcategory AS s 
          ON p.ProductSubcategoryID = s.ProductSubcategoryID
        WHERE s.[Name] LIKE @Product AND p.ListPrice < @MaxPrice);
-- Populate the output variable @compareprice.
SET @ComparePrice = @MaxPrice;
GO
19 апр 13, 10:35    [14202098]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
VIT2708
уже значение после его изменения
http://msdn.microsoft.com/ru-ru/library/ms177564.aspx

см. INSERTED
19 апр 13, 10:37    [14202107]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Maxx
VIT2708,

CREATE PROCEDURE [Test]
  @id bigint,
  @idUser bigintб
  @count bigint output
as
begin
   update [Table] set [calls]=[calls]+1 where [id]=@id and [idUser]=@idUser

  set @count =@@ROWCOUNT
end


если я правильно понял,чтио вы хотите вернуть


Мне надо вернуть значение то есть цифру которая изменилась в колонке [calls]

то есть было 3 мы добавили 1 и теперь надо вернуть цифру 4
19 апр 13, 10:38    [14202117]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Cammomile
Member

Откуда:
Сообщений: 1214
Передать- вернуть вот так.

use   AdventureWorks
GO
CREATE PROC tp
  @par int out  
AS

SET @par = @par+1000 

GO
DECLARE @par int 
SET @par = 333   
exec tp @par = @par out 

SELECT @par 

Go

DROP PROC tp 


А уж какая там логика внутри - вы сами решите.
19 апр 13, 10:46    [14202171]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
VIT2708
то есть было 3 мы добавили 1 и теперь надо вернуть цифру 4

Паганель ответил
19 апр 13, 10:47    [14202186]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Maxx,

Спасибо всем за помощь
19 апр 13, 10:50    [14202207]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
invm
Member

Откуда: Москва
Сообщений: 9823
VIT2708
Мне надо вернуть значение то есть цифру которая изменилась в колонке [calls]
CREATE PROCEDURE [Test]
  @id bigint,
  @idUser bigintб
  @count bigint output
as
begin
   update [Table] set @count = [calls]=[calls]+1 where [id]=@id and [idUser]=@idUser
end
19 апр 13, 10:52    [14202217]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
invm
VIT2708
Мне надо вернуть значение то есть цифру которая изменилась в колонке [calls]
CREATE PROCEDURE [Test]
  @id bigint,
  @idUser bigintб
  @count bigint output
as
begin
   update [Table] set @count = [calls]=[calls]+1 where [id]=@id and [idUser]=@idUser
end


@count bigint output но в этом параметре я ничего не передаю
19 апр 13, 11:00    [14202255]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
VIT2708,

declare @test bigint
exec Test
   @id = @id
  ,@idUser  =@idUser
 ,@count  =@test 

select @test 

BOL начните читать а ?
19 апр 13, 11:03    [14202271]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Maxx
VIT2708,

declare @test bigint
exec Test
   @id = @id
  ,@idUser  =@idUser
 ,@count  =@test  OUTPUT

select @test 


BOL начните читать а ?
19 апр 13, 11:03    [14202276]     Ответить | Цитировать Сообщить модератору
 Re: ХР с выходным параметром  [new]
VIT2708
Member [заблокирован]

Откуда: Киев
Сообщений: 1387
Maxx,

так читаю но теория без практики мне плохо запоминается, а вот практическое задание + теория = OK
19 апр 13, 11:24    [14202400]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить