首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在管理员表中添加管理员姓名和电话号码,同时使用存储过程从分支表中添加branch_name到管理员表中?

如何在管理员表中添加管理员姓名和电话号码,同时使用存储过程从分支表中添加branch_name到管理员表中?
EN

Stack Overflow用户
提问于 2018-08-01 23:12:04
回答 1查看 43关注 0票数 0

我有两张桌子

代码语言:javascript
代码运行次数:0
运行
复制
Branch (Branch_No, Branch_Name)
Admin (Admin_No, Admin_Name,Admin_Phone,Branch_No)

分支表应具有以下值

代码语言:javascript
代码运行次数:0
运行
复制
Branch_No     Branch_Name
1             Inala
2             Richlands
3             Forest Lake

现在,我想要注册一个新的管理员,通过选择branch_name from branch table将他分配到一个特定的分支。

为了让它更清楚,如果我想注册一个新的管理员,这是我想要做的

代码语言:javascript
代码运行次数:0
运行
复制
Enter Admin_Name: Raef
Enter Admin_Phone: 01711182097
Choose your Branch: Richlands [This value will be selected from Branch table]

完成注册后,我希望使用SELECT * FROM Admin查看以下输出:

代码语言:javascript
代码运行次数:0
运行
复制
Admin_No Admin_Name Admin_Phone Branch_No
1        Raef       01711182097  2

我想得到上面的最终结果,在注册新管理员时选择一个branch_name =‘Richland’。我想通过SQL Server存储过程来实现这个结果。

到目前为止,我所做的是:

首先,我创建了Branch表并插入了值

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE Branch
(Branch_No INTEGER IDENTITY(1,1) PRIMARY KEY,
 Branch_Name VARCHAR(50) NOT NULL
 )

INSERT INTO Branch (Branch_Name)
VALUES('Inala')
INSERT INTO Branch (Branch_Name)
VALUES('Richlands')
INSERT INTO Branch (Branch_Name)
VALUES ('Forest Lake')

然后我创建了Admin表

代码语言:javascript
代码运行次数:0
运行
复制
CREATE TABLE Admin
(Admin_No INTEGER IDENTITY(1,1) PRIMARY KEY,
 Admin_Name VARCHAR(50) NOT NULL,
 Admin_Phone VARCHAR(20) NOT NULL,
 Branch_No INTEGER NOT NULL FOREIGN KEY REFERENCES Branch(Branch_No)
 )

然后,我创建了一个用于注册新管理员的存储过程。

代码语言:javascript
代码运行次数:0
运行
复制
CREATE PROCEDURE AddAdmin
@AdminNo INTEGER OUTPUT,
@AdminName VARCHAR(50),
@AdminPhone VARCHAR(20),
@BranchName VARCHAR(20),
@BranchNo INTEGER OUTPUT
AS
BEGIN
SET @AdminNo = SCOPE_IDENTITY()
INSERT INTO Admin (Branch_No)
SELECT Branch.Branch_No FROM Branch,Admin
WHERE Branch.Branch_No = Admin.Branch_No
AND Branch_Name = @BranchName

INSERT INTO Admin (Admin_Name,Admin_Phone)
VALUES (@AdminName,@AdminPhone)
END

已成功创建存储过程

然后,我尝试执行存储过程,以便注册一个新的管理员

代码语言:javascript
代码运行次数:0
运行
复制
EXECUTE AddAdmin 'Raef','01711182097','Richlands'

我得到了以下错误消息:

代码语言:javascript
代码运行次数:0
运行
复制
Msg 8114, Level 16, State 5, Procedure AddAdmin, Line 41
Error converting data type varchar to int.

我几乎可以肯定,我所创建的存储过程中的逻辑语法存在错误。如果存储过程逻辑语法是固定的,这将对我非常有帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-01 23:32:25

你不需要插入管理员号码,因为你已经将其设置为身份,如果我穿着你的衣服在你的电脑上工作,我会这样做:

代码语言:javascript
代码运行次数:0
运行
复制
CREATE PROCEDURE AddAdmin
    @AdminName VARCHAR(50),
    @AdminPhone VARCHAR(20),
    @BranchName VARCHAR(20)
AS
BEGIN
    INSERT INTO Admin (Admin_Name, Admin_Phone, Branch_No)
    SELECT @AdminName, @AdminPhone, (Select Branch_No from Branch where Branch_Name = @BranchName)
END

请尝试一下并给我反馈,我现在不能运行SQL Server,所以我不能确定我是不是在哪里搞错了!

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51636808

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档