如何判断存储过程传近来的参数为空字符串,
if (@province=' ')
if (@province='')
if (@province=''''')
if (@province is null)
都不行啊.
我传进的参数为''
问题点数:50、回复次数:22Top
1 楼saucer(思归)回复于 2003-11-01 22:39:33 得分 0
what is the datatype for @province? what about
if len(@province) = 0Top
2 楼gyx999()回复于 2003-11-01 22:55:51 得分 0
不行啊,真奇怪哦.Top
3 楼saucer(思归)回复于 2003-11-01 22:58:20 得分 30
show your sp and the code which calls this spTop
4 楼saucer(思归)回复于 2003-11-01 23:01:52 得分 0
by the way, make sure you are using
@province varchar(10)
instead of
@province char(10)Top
5 楼gyx999()回复于 2003-11-01 23:11:48 得分 0
在php中调用,其中$jobkey为空
$query="exec sinconic_select '$jobkey','website','$province','$orderby'";
CREATE PROCEDURE sinconic_select
@jobkey varchar(30),
@website varchar(100),
@province varchar(15),
@myorder varchar(30)
AS
if ((len(@province) <> 0)and(len(@jobkey)<>0))
Top
6 楼saucer(思归)回复于 2003-11-01 23:20:43 得分 0
that is weird, what if you do
CREATE PROCEDURE sinconic_select
@jobkey varchar(30),
@website varchar(100),
@province varchar(15),
@myorder varchar(30)
AS
select len(@province) as len1, len(@jobkey) as len2
and check the value of "len1" and "len2"?
Top
7 楼flyelf(空谷清音)回复于 2003-11-01 23:23:12 得分 5
SET @province = NULLIF(LTRIM(RTRIM(@province)),'')
IF (@province IS NULL)
Top
8 楼gyx999()回复于 2003-11-01 23:33:29 得分 0
还是不行,真奇怪了Top
9 楼gyx999()回复于 2003-11-01 23:35:35 得分 0
调试的时候看@province 的值是''''Top
10 楼pengdali()回复于 2003-11-01 23:36:54 得分 10
'''' 不是空,是'如:
select '''',''''''
Top
11 楼pengdali()回复于 2003-11-01 23:38:08 得分 0
如何判断存储过程传近来的参数为空字符串:
create proc 过程名
@变量 varchar(100)
as
if isnull(@变量,'')=''
select '是空的'
else
select '不是空的'
goTop
12 楼pengdali()回复于 2003-11-01 23:39:20 得分 0
或:
create proc 过程名
@变量 varchar(100)
as
if rtrim(isnull(@变量,''))=''
select '是空的'
else
select '不是空的'
go
Top
13 楼gyx999()回复于 2003-11-01 23:39:33 得分 0
但我传进去的字符串是''
这个应该是空字符吧Top
14 楼gyx999()回复于 2003-11-01 23:42:29 得分 0
select len(@province) as len1, len(@jobkey) as len2
发现len1的值为2
奇怪
Top
15 楼saucer(思归)回复于 2003-11-01 23:44:09 得分 0
try to write it out the $query variable to see what is in it
<?php echo("*****$query****"); ?>
Top
16 楼pengdali()回复于 2003-11-01 23:45:52 得分 0
你用:
rtrim
和
ltrim
取去掉空格呀。
如:
create proc 过程名
@变量 varchar(100)
as
if ltrim(rtrim(isnull(@变量,'')))=''
select '是空的'
else
select '不是空的'
goTop
17 楼gyx999()回复于 2003-11-01 23:48:34 得分 0
****exec sinconic_select '','website','','jobpostDate desc'****Top
18 楼saucer(思归)回复于 2003-11-01 23:58:00 得分 0
change your sp to
CREATE PROCEDURE sinconic_select
@jobkey varchar(30),
@website varchar(100),
@province varchar(15),
@myorder varchar(30)
AS
select len(@province) as len1, len(@jobkey) as len2
then do
$result = mssql_execute($query);
$numProds = mssql_num_rows($result);
echo "<h1>" . $numProds ."</h1>";
if ($row = mssql_fetch_row($result))
{
echo "len1=" . $row[0] . "<br>";
echo "len2=" . $row[1] . "<br>";
}
what do you see?
Top
19 楼pengdali()回复于 2003-11-01 23:58:01 得分 0
1、你在查询分析器里执行会出错吗?
exec sinconic_select '','website','','jobpostDate desc'
2、你的过程代码Top
20 楼gyx999()回复于 2003-11-02 02:01:19 得分 0
'a' 的len为3
'' 的len为2
'ab'的len为4
真是奇怪.
所以我现在判断@province是否为空变成判断它的len是否为2
你说怪不怪啊.我就怕以后出现问题Top
21 楼saucer(思归)回复于 2003-11-02 02:39:19 得分 0
something is wrong with the mssql_execute implmentation, suggest you to use null instead of '', also, try to use mssql_bindTop
22 楼owenszc(晕晕@鸟)回复于 2003-11-02 02:39:47 得分 5
declare @a varchar(100),@b varchar(100)
select @a=''
select @b=null
select len(@b)
select len(@a)
@b
null
@a
0
明白吗?Top
相关问题
- 如何将VB的字符串做为ADODC中存储过程的参数,去执行SQL的存储过程
- 在SqlServer的存储过程中,如何判断传进来的字符串参数是诸如"12:12:00"的时间格式。
- 如何在将sql语句作为存储过程的字符串参数
- 关于执行一个带字符串参数的存储过程的问题?
- 存储过程字符串参数格式问题,头搞晕了,,
- 在存储过程中如何判断01字符串中1的位置呢?
- 在存储过程中使用字符串参数代替部分sql语句实现动态参数
- 存储过程的字符串参数,怎么用在select语句的where ItemNum in 里面呀?
- sqlanywhere在pb中的存储过程无法返回字符串参数(odbc连接)
- ADO操作存储过程中的text类型参数时出现“字符串数据,右截位”错误!




