Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何在admin表中添加管理员姓名和电话,同时使用存储过程从branch表中向admin表中添加branch_名称?_Sql_Sql Server_Stored Procedures - Fatal编程技术网

Sql 如何在admin表中添加管理员姓名和电话,同时使用存储过程从branch表中向admin表中添加branch_名称?

Sql 如何在admin表中添加管理员姓名和电话,同时使用存储过程从branch表中向admin表中添加branch_名称?,sql,sql-server,stored-procedures,Sql,Sql Server,Stored Procedures,我有两张桌子 Branch (Branch_No, Branch_Name) Admin (Admin_No, Admin_Name,Admin_Phone,Branch_No) 分支表应具有以下值 Branch_No Branch_Name 1 Inala 2 Richlands 3 Forest Lake 现在,我想注册一个新管理员,通过从branch表中选择branch_名称,将他分配到一个特定的分支中 为

我有两张桌子

Branch (Branch_No, Branch_Name)
Admin (Admin_No, Admin_Name,Admin_Phone,Branch_No)
分支表应具有以下值

Branch_No     Branch_Name
1             Inala
2             Richlands
3             Forest Lake
现在,我想注册一个新管理员,通过从branch表中选择branch_名称,将他分配到一个特定的分支中

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

Enter Admin_Name: Raef
Enter Admin_Phone: 01711182097
Choose your Branch: Richlands [This value will be selected from Branch table]
完成注册后,我希望使用SELECT*FROM Admin查看以下输出:

Admin_No Admin_Name Admin_Phone Branch_No
1        Raef       01711182097  2
我想在注册新管理员时选择一个分支名称='Richlands'后,得到上面的最终结果。我想通过SQLServer存储过程实现这个结果

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

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

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')
然后我创建了管理表

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)
 )
然后我创建了一个用于注册新管理员的存储过程

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
已成功创建存储过程

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

EXECUTE AddAdmin 'Raef','01711182097','Richlands'
我收到了以下错误消息:

Msg 8114, Level 16, State 5, Procedure AddAdmin, Line 41
Error converting data type varchar to int.
我几乎可以肯定,在我创建的存储过程中,我的逻辑语法有一个错误。
如果存储过程逻辑语法是固定的,这将对我非常有帮助

您不需要插入管理员号码,因为您已将其设置为identity,如果我站在您的立场,穿着您的衣服,在您的计算机上工作,我会这样做:

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,所以我不能确定我是否在某个地方犯了错误

您不需要插入管理员号码,因为您已将其设置为identity,如果我站在您的立场,穿着您的衣服,在您的计算机上工作,我会这样做:

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,所以我不能确定我是否在某个地方犯了错误

我认为SET@AdminNo=SCOPE\u IDENTITY不会包含任何内容,因为它前面没有插入项。似乎有些不对劲。哎哟。。。旧的联接语法。您可能会从学习新语法中受益—它已经有20年历史了—我认为SET@AdminNo=SCOPE\u IDENTITY不会包含任何内容,因为它前面没有插入项。似乎有些不对劲。哎哟。。。旧的联接语法。如果我站在你的立场上,穿着你的衣服,在你的电脑上工作@Zack我是个鬼,那我就是这么做的,你可能会从学习新语法中受益XD@Tonner马恩。。。我测试了你的代码,它成功地工作了。。。在使用输入参数执行过程之后,我得到了我想要的结果。。。真的很感激:@beginIT我真的很高兴我能帮上忙^如果我站在你的立场,穿着你的衣服,在你的电脑上工作@Zack我是个鬼,我就是这么做的XD@Tonner马恩。。。我测试了你的代码,它成功地工作了。。。在使用输入参数执行过程之后,我得到了我想要的结果。。。非常感谢:@beginIT我真的很高兴能帮上忙^__^