不用这样写,只写
Create PROCEDURE PROD
@S_NAME VARCHAR(5)
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE S_NAME //????就是这里有问题。不知道该怎么弄好。
GO
就行了
关键是你的字符串处理时
如 dim dd as string
dd="%" & "你的参数" & "%"
这样就行了
Create PROCEDURE PROD
@S_NAME VARCHAR(5)
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE S_NAME //????就是这里有问题。不知道该怎么弄好。
GO
就行了
关键是你的字符串处理时
如 dim dd as string
dd="%" & "你的参数" & "%"
这样就行了
@S_NAME VARCHAR(5) )
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE '%'+@S_NAME+'%'
要注意去掉@S_NAME后面的空格!
@S_NAME VARCHAR(5) OUTPUT,
@S_introduce text oupput
AS
SELECT * FROM TABLE1 WHERE
S_NAME LIKE '%'+@S_NAME+'%' or
S_NO like '%'+@S_introduce+'%' //这里报错。
GO
错误如下:
错误403:对数据类型而言,运算符无效,运算符为add,类型为text.这是为什么啊?难道text类型不能?
为什么不看看我说的那个
我一直都这么用的
再说 output 也不是不可以的
output 也不是是输出参数,既可以输入 也 可以输出的吧!
S_introduce like '%'+@S_introduce+'%' //这里报错。是怎么回事啊?
S_NAME LIKE '%'+@S_NAME+'%' or
S_introduce like '%'+@S_introduce+'%' //这里报错。
就报错呢?
一个的话可以了。
S_NAME LIKE '%'+@S_NAME+'%'
@S_NAME VARCHAR(5) OUTPUT
AS
SET @S_NAME = '%' + @S_NAME + '%'
SELECT * FROM TABLE1 WHERE
S_NAME LIKE S_NAME
GO
@S_NAME VARCHAR(5) OUTPUT
AS
SET @S_NAME = '%' + @S_NAME + '%'
SELECT * FROM TABLE1 WHERE
S_NAME LIKE @S_NAME
GO
另外就是,多条件查询时输入的变量间是用空格隔开吗?
比如:
DBSP.CommandText="Exec complex_query "
+"'"+dtInfTime+"' "
+"'"+this.TextBox_inf_subject.Text.Trim()+"' "
+"'"+this.TextBox_inf_key.Text.Trim()+"' "
+"'"+this.TextBox_recorder.Text.Trim()+"' "
+"'"+dtRecordTime+"' "
+"'"+this.TextBox_inf_id.Text.Trim()+"'";
DBSP.Connection.Open();
DBSP.ExecuteReader();
现在的人呀,我的程序用多少年都没错,为什么不考虑呢?
Create PROCEDURE PROD
@S_NAME VARCHAR(5) OUTPUT
AS
SET @S_NAME = '%' + @S_NAME + '%'
SELECT * FROM TABLE1 WHERE
S_NAME LIKE @S_NAME
GO
这样写也是行的,是动态 SQL 语句 必须得赋值的
不过我个人认为还是用字符串,即我的那种方法好,不容易出错
CREATE PROCEDURE complex_query
@inf_time datetime output,
@subject varchar(50) output,
@information text output,
@recorder char(10) output,
@record_time datetime output,
@inf_id int output,
@inf_temp text
AS
set @inf_temp='%'+@information+'%'
select * from et_inf where
inf_time=@inf_time or
subject like '%'+@subject+'%' or
information like @inf_temp or
recorder=@recorder or
record_time=@record_time
GO