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