2015-04-24 4 views
0

Я хотел бы установить мою переменную '@Xdate' в поле 'updated' из 'dbo.Mtabel'.Переменная хранимой процедуры из таблицы

ALTER PROCEDURE [dbo].[SP_Mproc] 
(
@snumber nvarchar(50), 
@inumber nvarchar(10), 
@tdate datetime 
) 
AS 
IF exists (Select snumber, updated FROM dbo.Mtabel Where snumber = @snumber AND inumber = @inumber) 
GO 
declare 
    @Xdate datetime, 
    @sdate datetime 

select 
    @Xdate = [email protected], 
    @Ydate = GETDATE() 
+1

Тег СУБД, так что вы получите нужное внимание! (Здесь присутствует не ANSI SQL ...) – jarlh

+2

Замечание, если это для ** SQL Server **: вы не должны ** использовать префикс 'sp_' для ваших хранимых процедур. Microsoft [зарезервировала этот префикс для собственного использования (см. * Именование сохраненных процедур *)] (http://msdn.microsoft.com/en-us/library/ms190669%28v=sql.105%29.aspx) и вы рискуете столкнуться с именем когда-нибудь в будущем. [Это также плохо для производительности вашей хранимой процедуры] (http://www.sqlperformance.com/2012/10/t-sql-queries/sp_prefix). Лучше просто просто избегать 'sp_' и использовать что-то еще в качестве префикса - или никакого префикса вообще! –

ответ

0
SELECT @xdate = updated, @ydate=getdate() FROM dbo.Mtabel WHERE snumber = @snumber AND inumber = @inumber 
0
ALTER PROCEDURE [dbo].[SP_Mproc] 
(
    @snumber nvarchar(50), 
    @inumber nvarchar(10), 
    @tdate datetime 
) 
AS 

declare @Xdate datetime, @Ydate datetime 
Select @Xdate = updated, @Ydate = getDate() FROM dbo.Mtabel Where snumber = @snumber AND inumber = @inumber 
IF @@ROWCOUNT > 0 
BEGIN 
    -- @Xdate contains 'updated', @Ydate contains current datetime 
    ... 
END 
GO 

Это должно помешать вам сделать несколько звонков для одних и тех же данных.

0

попробовать этот

CREATE TABLE #YourTable 
    (id varchar(50),Date1 Date, Date2 Date) 
; 

INSERT INTO #YourTable 
    (id, Date1, Date2) 
VALUES 
    ('1','2015-01-10','2015-01-20'), 
    ('2','2015-01-20','2015-01-11'), 
    ('3','2015-01-15','2014-01-15'), 
    ('4','2015-02-18','2016-03-09') 
; 
-- select * from #YourTable 


Declare @Xdate date 
select @Xdate= Date2 from #YourTable where Date2 > GETDATE() 
print @Xdate 
Смежные вопросы