需要做一個存儲過程,將在表上做一個簡單的搜索,加上有3個參數,前兩個是日期範圍,第三個是如果不同於NULL將包括在在哪裏,如果等於NULL,那麼不會尋求這個值,因爲我可以做這個搜索?在存儲過程中的一個簡單的查詢
回答
Where @parameter1 = ColA
AND @parameter2 = ColB
and ISNULL(@parameter3, ColC) = ColC
WHERE @parameter IS NULL or field = @parameter
是的!您可以通過將三個變量傳遞給主機程序並使用它們編寫自定義的CURSOR SELECT
來實現。然後open the cursor
和throw the resultset
。您的搜索結果現在可以使用了。如果需要語法幫助,請回復您使用的主機語言和規範。發佈挑戰和解決方案,你可以獲得同樣的幫助,可以幫助其他人。
什麼?不,考慮到標籤的上下文(SQL Server),該答案甚至沒有意義, – billinkc
請嘗試以下操作。請注意,如果Column3可能爲null,那麼您需要在列名稱上使用isnull()函數,以及不能比較空值。所以如果Column3的數據類型是int,那麼你可以使用:and isnull(Column3,0)= isnull(@ param3,isnull(Column3,0))。
create procedure Test
@param1 varchar(50),
@param2 varchar(50),
@param3 varchar(50) = null
as
begin
select *
from Table1
where Column1 = @param1
and Column2 = @param2
and Column3 = isnull(@param3, Column3)
end
你試圖執行的一般形式是動態查詢。請參閱此問題的解決方案update statement not executing
我正在使用冒險工程數據庫。
CREATE PROCEDURE upContactDetails
@FirstName [nvarchar](50),
@LastName [nvarchar](50),
@MiddleName [nvarchar](50)
AS
BEGIN
SET NOCOUNT ON;
SELECT Title
, FirstName
, MiddleName
, LastName
, EmailAddress
FROM Person.Contact
WHERE (@MiddleName IS NULL or MiddleName = @MiddleName)
AND FirstName = @FirstName
AND LastName = @LastName
END
GO
試試這個..
Create Prucedure test
@p1 int,@p2 int,@p3 nvarchar(50)
As
Begin
If @p3 is null
Select * from table where [email protected] and [email protected]
Else
Select * from table where [email protected] and [email protected] and [email protected]
End
對不對格式不正確這是因爲我從手機發送答案
想象一下,您有一個交易表,您可以在其中存儲交易號碼和交易日期,如下所示。
CREATE TABLE [dbo].[TrnMast](
[TrnNo] [numeric](10, 0) NOT NULL,
[AcYear] [int] NOT NULL,
[Comp_Code] [varchar](5) NOT NULL,
[InvNo] [varchar](20) NULL,
[TrnDate] [datetime] NULL,
[P_Code] [varchar](5) NULL,
[Amount] [money] NULL,
[Remark] [varchar](50) NULL
CONSTRAINT [PK_TrnMast_1] PRIMARY KEY CLUSTERED
(
[TrnNo] ASC,
[Comp_Code] ASC,
[AcYear] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
現在看存儲過程與3個參數有兩個日期範圍參數和TrnNo下面。
CREATE PROCEDURE [dbo].[SP_TrnMast]
@FTrnDate SmallDateTime = Null,
@TTrnDate SmallDateTime = Null,
@AcYear Int
AS
Begin
Select * From TrnMast
Where (@FTrnDate Is Null Or TrnMast.TrnDate >= @FTrnDate)
And (@TTrnDate Is Null Or TrnMast.TrnDate <= @TTrnDate)
And TrnMast.AcYear = @AcYear
End
- 1. 簡單的存儲過程
- 2. 在一個存儲過程中的兩個select查詢
- 3. 存儲過程更快的簡單查詢
- 4. 存儲過程更快/更好,然後簡單的查詢?
- 5. 2在一個存儲過程中的SQL查詢
- 6. 轉換簡單的T-SQL查詢來分頁啓用查詢存儲過程
- 7. SQL Server 2008:一個存儲過程中的多個查詢
- 8. SSRS - 在一個存儲過程中返回多個查詢
- 9. 簡單存儲過程比標準查詢慢!爲什麼?
- 10. 如何將此存儲過程轉換爲簡單查詢
- 11. 簡單的存儲過程的問題
- 12. 一個簡單的查詢
- 13. 將簡單查詢鏈接到執行多個存儲過程的腳本
- 14. 如何存儲加入單個變量查詢在存儲過程中
- 15. 存儲過程中的子查詢
- 16. 改進存儲過程中的查詢
- 17. 存儲過程中的子查詢
- 18. 調用存儲過程中的查詢
- 19. 並行查詢處理在一個特定的存儲過程
- 20. 如何在一個簡單的Oracle查詢中使用「存在」
- 21. 簡單的teradata存儲過程
- 22. 簡單的Informix選擇存儲過程
- 23. 生成簡單的CRUD存儲過程
- 24. 簡單的DocumentDb存儲過程
- 25. 子查詢不存在,存儲過程
- 26. 如何把我的查詢合併到一個單一的查詢(或可能是一個存儲過程。)
- 27. 查詢到存儲過程
- 28. 存儲過程xml查詢
- 29. SQL查詢/存儲過程
- 30. Oracle查詢 - 存儲過程
'WHERE @參數1 =可樂@參數2 = COLB AND(@參數3爲空或@參數3 = COLC)' – SQLMason