【发布时间】:2016-06-12 16:11:58
【问题描述】:
我是 MS SQL 2014 存储过程的新手。我有一个如下所示的表格。我想创建一个存储过程。 我设计了我的存储过程,但我觉得很难,我什至无法开始。谁能帮助我,我该怎么做?
我必须将 CardNo、CardPassword 和 PosSerialNo 发送到 SQL 存储过程。作为回报,我需要获取客户姓名、姓氏和金额。
发送: CardNo、CardPass、PosSerialNo
正在接收: 如果 Sending.CardPass = CardPasswordTable.Password 请执行下列操作: 如果成功,我会得到:CustomerName、CustomerSurname 和 Amount 如果没有,我会得到:“未找到数据”
我的桌子:
1) CardIssueTable: 列: CardId、CardNo、CustId
2) 客户表: 列: CustId、CustName、CustSurname
3) 后置表: 列: PosId、PosSerial、PosLocation
4) 付款表: 列: PaymentId、PaymentLoaction、PaymentAmount
5) 卡片密码表: 列: 密码、密码
已编辑:
这是我的存储过程。当我执行时,我得到一个错误。
存储过程:
USE [LTKB_Card]
GO
/****** Object: StoredProcedure [dbo].[CardCustomerControl] Script Date: 2.03.2016 10:03:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*parameters*/
ALTER Procedure [dbo].[CardCustomerControl](
@CardNo varchar(50),
@CardPass varchar(10),
@PosSerialNo varchar(50)
)
AS
BEGIN
DECLARE /*internal of sp*/
@CustName varchar(100),
@CustId int,
@CustSurName varchar(100),
@Amout int,
@PosId int,
@PassId int
SELECT @CustName=CUS.CustomerName, @CustSurName=CUS.CustomerSurname ,@CustId=C.CardCustomer
FROM CardBASIM C
INNER JOIN CUSTOMERS CUS ON C.CardCustomer=CUS.CustomerName
WHERE C.CardNo=@cardNo
SELECT @PassId=PASID FROM CardPASSLIST C WHERE C.CardPassowrd=@CardPass
SELECT @Amout=PT.PaymentAmount
FROM POS P
INNER JOIN PAYMENT PT on P.PosLocation=PT.PAYID
WHERE P.PosSerial=@PosSerialNo
if (@CustId is not null and @PassId is not null and @PosId is not null)
begin
select @CustName CustName, @CustSurName CustSurname , @Amout Amount
end
else
begin
select 'NoDataFound'
end
END
执行语句:
USE [LTKB_Card]
GO
DECLARE @return_value int
EXEC @return_value = [dbo].[CardCustomerControl]
@CardNo = N'5852354822730001',
@CardPass = N'jSCm6xkBpK',
@PosSerialNo = N'RR-312-001387'
SELECT 'Return Value' = @return_value
GO
错误:
消息 248,级别 16,状态 1,过程 ElitcardCustomerControl,第 21 行 varchar 值 '5852354822730001' 的转换溢出 int 列。
(受影响的 1 行)
(受影响的 1 行)
下面是表格的关系:
【问题讨论】:
-
你能解释一下所有表格之间的关系,并展示你到目前为止所做的尝试吗?
-
在英语中我们称它们为“存储过程”的缩写,它是一个存储在服务器上的过程。商店程序是在零售地点完成的一组操作。
-
您遇到了什么问题?你能写一个查询来获取带有所需过滤器的数据吗?从那里将其放入存储过程非常简单。
-
请告诉我,您并没有真正以纯文本形式存储信用卡号和密码。
-
不,我没有以密文形式存储,我将使用 SP 来提供 Web 服务。加上卡号和密码是加密的。这就是例子。另外,我还有另外 2 个安全选项。 PIN 码和 OTP(一次性密码)
标签: sql-server stored-procedures