';和'';或';SQL Server中使用存储过程的条件
我有一个关于在SQLServer2005中使用存储过程的问题 这是我的存储过程:';和'';或';SQL Server中使用存储过程的条件,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有一个关于在SQLServer2005中使用存储过程的问题 这是我的存储过程: ALTER PROCEDURE [dbo].[tst_user_sp] -- Add the parameters for the stored procedure here @p1 nvarchar = null, @p2 nvarchar = null AS BEGIN -- SET NOCOUNT ON added to prevent extra result
ALTER PROCEDURE [dbo].[tst_user_sp]
-- Add the parameters for the stored procedure here
@p1 nvarchar = null,
@p2 nvarchar = null AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT state
FROM tst_user
WHERE user_id = @p1 AND user_pwd = @p2;
END
我的预期输出是获取“state”的值。它返回了一个空记录
但是,在将和
更改为或
之后,我得到了输出。为什么我不能使用和获得输出
我的sql查询:
exec tst_user_sp 'lackh', 's'
我不知道这是否与您看到的问题有关,但您的存储过程有一个大问题。定义是:
ALTER PROCEDURE [dbo].[tst_user_sp]
-- Add the parameters for the stored procedure here
@p1 nvarchar = null,
@p2 nvarchar = null AS
这将使用nvarchar
字段的默认长度,默认长度因上下文而异。在SQL中使用字符串类型时,应始终使用长度。比如:
ALTER PROCEDURE [dbo].[tst_user_sp] (
-- Add the parameters for the stored procedure here
@p1 nvarchar(4000) = null,
@p2 nvarchar(4000) = null
) AS
考虑到您在过程中所做的工作,任何使用默认值的操作都不会返回任何值,因为where
子句是如何定义的。我不知道这是否与您看到的问题有关,但您的存储过程有一个大问题。定义是:
ALTER PROCEDURE [dbo].[tst_user_sp]
-- Add the parameters for the stored procedure here
@p1 nvarchar = null,
@p2 nvarchar = null AS
这将使用nvarchar
字段的默认长度,默认长度因上下文而异。在SQL中使用字符串类型时,应始终使用长度。比如:
ALTER PROCEDURE [dbo].[tst_user_sp] (
-- Add the parameters for the stored procedure here
@p1 nvarchar(4000) = null,
@p2 nvarchar(4000) = null
) AS
考虑到您在过程中所做的工作,任何使用默认值的操作都不会返回任何值,因为where
子句是如何定义的。我不知道这是否与您看到的问题有关,但您的存储过程有一个大问题。定义是:
ALTER PROCEDURE [dbo].[tst_user_sp]
-- Add the parameters for the stored procedure here
@p1 nvarchar = null,
@p2 nvarchar = null AS
这将使用nvarchar
字段的默认长度,默认长度因上下文而异。在SQL中使用字符串类型时,应始终使用长度。比如:
ALTER PROCEDURE [dbo].[tst_user_sp] (
-- Add the parameters for the stored procedure here
@p1 nvarchar(4000) = null,
@p2 nvarchar(4000) = null
) AS
考虑到您在过程中所做的工作,任何使用默认值的操作都不会返回任何值,因为where
子句是如何定义的。我不知道这是否与您看到的问题有关,但您的存储过程有一个大问题。定义是:
ALTER PROCEDURE [dbo].[tst_user_sp]
-- Add the parameters for the stored procedure here
@p1 nvarchar = null,
@p2 nvarchar = null AS
这将使用nvarchar
字段的默认长度,默认长度因上下文而异。在SQL中使用字符串类型时,应始终使用长度。比如:
ALTER PROCEDURE [dbo].[tst_user_sp] (
-- Add the parameters for the stored procedure here
@p1 nvarchar(4000) = null,
@p2 nvarchar(4000) = null
) AS
考虑到您在过程中所做的操作,任何使用默认值的操作都不会返回任何值,因为where
子句的定义方式。您是否有正确的数据要为“and”语句返回?听说过真值表吗?因为没有一行同时具有所需的user\u id
和user\u pwd
。因此,存储过程不返回任何内容。是的,我有,但条件是两者都应得到满足。这与当前的问题无关,但实际上您可以执行此类查询这一事实强烈表明密码可能以明文形式存储,这总是一个坏主意。你有正确的数据返回“和”语句吗?听说过真值表吗?因为没有一行同时具有所需的user\u id
和user\u pwd
。因此,存储过程不返回任何内容。是的,我有,但条件是两者都应得到满足。这与当前的问题无关,但实际上您可以执行此类查询这一事实强烈表明密码可能以明文形式存储,这总是一个坏主意。你有正确的数据返回“和”语句吗?听说过真值表吗?因为没有一行同时具有所需的user\u id
和user\u pwd
。因此,存储过程不返回任何内容。是的,我有,但条件是两者都应得到满足。这与当前的问题无关,但实际上您可以执行此类查询这一事实强烈表明密码可能以明文形式存储,这总是一个坏主意。你有正确的数据返回“和”语句吗?听说过真值表吗?因为没有一行同时具有所需的user\u id
和user\u pwd
。因此,存储过程不返回任何内容。是的,我有,但条件是两者都应得到满足。这与当前的问题无关,但实际上您可以执行此类查询这一事实强烈表明密码可能以明文形式存储,这总是一个坏主意。NVARCHAR
参数的默认长度是1个字符!通常不是人们期望和想要的…并且NVARCHAR
参数的默认长度是1个字符!通常不是人们期望和想要的…并且NVARCHAR
参数的默认长度是1个字符!通常不是人们期望和想要的…并且NVARCHAR
参数的默认长度是1个字符!通常不是一个人期望和想要的。。。