Azize德爾,
組合框hamishe baiangare查找AST科hamanande表EIST柯2 sotoune編號VA描述者darad。 Agar gharar ast meghdare entekhabie ComboBox be StoredProcedure ferestade beshe,pishnahad mikonam az Id e Bind shind be SelectedValue e ComboBox estefade beshe。 Nvarchar ro be SP ferestadan kare dorosti nist。
尊敬的先生/女士,
組合框始終是查找信息系統的替代品就是喜歡一個只有兩列,Id和描述者的表。如果您要將ComboBox的SelectedValue發送到您的StoredProcedure,我建議將SelectedValue的綁定值作爲整數發送給它。然後你有很多選項來編寫你的查詢。通過使用Nvarchar發送LookUp值可能會在您的應用程序的將來產生很多副作用(與排序相比,它有許多問題)。
乾杯
更改代碼這樣:
USE [QueueDB]
GO
/****** Object: StoredProcedure [dbo].[SP_SelectDriver_ByNameAndField] Script Date: 09/07/2012 17:20:24 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[SP_SelectDriver_ByNameAndField] (
@Word Nvarchar(100)
, @Field TinyInt
) As Begin
Select *
From Driver
Where Case When @Field = 1
And Column1 Like + N'%' + @Word + '%'
Then 1
When @Field = 2
And Column2 Like + N'%' + @Word + '%'
Then 1
When @Field = 3
And Column3 Like + N'%' + @Word + '%'
Then 1
Else 0
End = 1
;
Return 0;
END
您也可以用另外一種方式:
USE [QueueDB]
GO
ALTER PROCEDURE [dbo].[SP_SelectDriver_ByNameAndField] (
@Word Nvarchar(100)
, @Field TinyInt
) As Begin
Declare @Command Nvarchar(Max);
Select @Command = N'
Select *
From Driver
Where '
+ Case When @Field = 1
Then 'Column1'
When @Field = 2
Then 'Column2'
When @Field = 3
Then 'Column3'
Else 'DefaultColumn'
End
+ N' Like + N''%'
+ @Word
+ N'%'''
;
Execute (@Command);
Return 0;
END
您如何看待Sql Server中會預編譯此查詢計劃?我建議使用動態SQL。什麼將調用存儲過程? – Jodrell