用户输入的sql查询

j9per5c4  于 2021-07-27  发布在  Java
关注(0)|答案(1)|浏览(336)

我编写了一个sql查询,它从用户那里获取输入(通过应用程序获取客户id)并返回记录,但是如果id为零,它将显示“invalid id”。当我设置id(set@cid=#####)时,我编写的查询确实正确地显示了数据,但不确定这是否是正确的方法。另外,我如何限制用户输入最少三位数字。下面是查询

USE WideWorldImporters
GO

DECLARE @CID int;
SET @CID = @CID

IF @CID > 0
    BEGIN  
SELECT CustomerID, sum(TransactionAmount) as TotalAmount
FROM  Sales.CustomerTransactions  
Where CustomerID = @CID
Group by customerID

        RETURN  
    END  
ELSE  

Begin
PRINT 'Invalid ID'  
END;
kqhtkvqz

kqhtkvqz1#

基于你现在的代码。我假设customerid实际上是一个int,这意味着数字前面多余的0不存在(i、 e.0011不是实际的id。由于列是数字,因此将存储为11)。
记住这一点,您可以将当前代码写入这样一个过程中,在您描述的情况下(null,最少3位,不小于0),该过程不会执行select。

CREATE PROCEDURE dbo.foo
@CID INT
AS
BEGIN
IF (@CID >= 1000) --This works because it's a numeric column. NULL is not greater than 1000 either.
                  --And anything less than 1000 would not be 3 digits.
  BEGIN  
    SELECT CustomerID, SUM(TransactionAmount) as TotalAmount
    FROM  Sales.CustomerTransactions  
    WHERE CustomerID = @CID
    GROUP BY CustomerID
  END  
ELSE
  BEGIN
    --SELECT 'Invalid ID' Use this if you want a single data row to be returned.
                       -- Note this column would be a varchar!
    PRINT 'Invalid ID' -- Print goes to the output window, 
                       -- not the results window like a query would.
  END
END

sql server中的执行将按照

EXEC dbo.foo 1100

这是因为只有一个参数,所以您不必标识它。或者,调用过程并显式指定参数值的方法是。

EXEC dbo.foo @CID = 1100

相关问题