请教一个问题:我想写一个多条件查询的存储过程,有多个参数为条件,用户可能输入其中的几个(不一定是全部)条件,如果在delphi中可以用拼接sql语句的方法(如果用户不输入参数则不加那个and 语句)在sql server中可不可以用这种方法写存储过程,如果可以的话该怎么写?如果不行的话有什么方法可以解决?谢谢!
解决方案 »
- delphi 日期加法运算
- 语法分析是用的什么原理?
- 把card表中id=1的cardname、cardbank等的内容显示到各个edit中,请大家看看这段代码有什么错吗?
- 到底错在哪了???急!!在线等....问题解决马上给分!!!
- 一个初学者的问题!关于DBCombobox显示指定字段下的值!
- 请问提醒或闹钟用哪种方法最好?
- delphi程序员月薪大调查,跟贴加分!!!!
- 紧急求救!!DBCtrlGrid中当记录数少于DBCtrlGrid.RowCount时,如何。。。
- 我问了3次怎么还是没人回答呢???"blob not opened"该怎么解呢?????
- 关于拖拽小问题
- 一搜,欢乐搜索,一百万奖品,是真的吗?
- 请问:一个函数实现在Windows环境中关机,在设计中需要注意那些环节呢?
/********************************************************************************************/
/* PROCEDURE: xcx_tsqk 图书情况查询 */
/********************************************************************************************/
if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[xcx_tsqk]')
and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[xcx_tsqk]
GOcreate procedure xcx_tsqk
@mtsmc varchar(50) = null,
@mcbs varchar(50) = null,
@mdj money = null
as
declare
@sql varchar(1000)
begin
if (@mtsmc is null and @mcbs is null and @mdj is null)
begin
print '图书名称、出版社和单价必需输入一项!'
return
end set @sql = 'select 图书代码 = tsdm04, 图书名称 = tsmc04, 出版社 = cbs04, 单价 = dj04 '
set @sql = @sql + 'from tsqk where 1 = 1 '
if (@mtsmc is not null)
begin
set @sql = @sql + 'and tsmc04 like ''%'' + ''' + @mtsmc + ''' + ''%'' '
end if (@mcbs is not null)
begin
set @sql = @sql + 'and cbs04 like ''%'' + ''' + @mcbs + ''' + ''%'' '
end if (@mdj is not null)
begin
set @sql = @sql + 'and dj04 = ' + convert(varchar(20), @mdj)
end
execute(@sql)
end
GO
@wherestr varchar(8000)
AS
exec('select*from table1 where '+@wherestr)
GO