USE [MyDatabase]
GO
Object: StoredProcedure [dbo].[SP_MyProcedure]
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SP_MyProcedure]
-- Add the parameters for the stored procedure here
@StartDate NVARCHAR(19),
@EndDate NVARCHAR(19)
AS
BEGIN
SET NOCOUNT ON;
Insert statements for procedure here
DECLARE @FirstQuery nvarchar(1500);
DECLARE @SecondQuery nvarchar(1500);
DECLARE @TSQL nvarchar(4000);
SET @FirstQuery =
'
SELECT * FROM OPENQUERY(LinkedServer,
''
SELECT * FROM Server.Table
WHERE Name IN
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyServer.dbo."NameList"
WHERE LOCATION = ''''X'''' AND SOURCE = ''''Y'''') AND TIMESTAMP >= ''''' + @StartDate + ''''' AND TIMESTAMP < ''''' + @EndDate + ''''''')';
我的問題是:如何在代碼中包含max(date),因此@startDate將與DB中列的最近可用日期進行比較而不是今天的日期。 您看到的代碼工作正常,但是,當我選擇比數據庫中最後一個現有日期更晚的日期時,查詢運行一段時間,然後它返回未找到任何列的錯誤。SQL選擇SP中的maxDate
在此先感謝您的任何建議。
幫助。 下面的代碼部分不起作用,但我不明白爲什麼。有沒有人有什麼建議?謝謝
-- Insert statements for procedure here
DECLARE @FirstQuery nvarchar(1500);
DECLARE @SecondQuery nvarchar(1500);
DECLARE @TSQL nvarchar(4000);
DECLARE @MaxTimeStamp nvarchar(19);
[email protected] =
'SELECT MAX(TimeStamp) From OPENQUERY(LinkedServer)'
IF @StartDate <= @MaxTimeStamp
BEGIN
SET @FirstQuery =
'
SELECT * FROM OPENQUERY(LinkedServer,
''
SELECT * FROM Server.Table
WHERE Name IN
(SELECT Tagname COLLATE DATABASE_DEFAULT FROM LocalServer.MyServer.dbo."NameList"
WHERE LOCATION = ''''X'''' AND SOURCE = ''''Y'''') AND TIMESTAMP >= ''''' + @StartDate + ''''' AND TIMESTAMP < ''''' + @EndDate + ''''''')';
END
爲什麼有這麼多'「單曲? – Dukeling 2013-02-14 13:27:28