涉及子查询的SQL Update存储过程

时间:2018-02-12 10:41:51

标签: sql sql-server stored-procedures subquery

我的数据库中有一些表格。

collection of db tables

我正在尝试使用SQL存储过程更新rota表。我希望用户能够输入,例如;

姓名:Adam Brookes

转变:中午

On Call:Secondary

并使用子查询让它查找其中的id并将它们放入rota表中。目前我在Postman进行测试,在那里我可以定义日期'和' datekey'手动

我的存储过程目前看起来像这样;

ALTER PROCEDURE [dbo].[RotaUpdateItems]
    @date_key int,
    @date date,
    @user_id varchar(max),
    @shift_type_id int,
    @type_call_id int

AS
BEGIN

    SET NOCOUNT ON;

    UPDATE rota
    SET date = @date,
        user_id = (
        SELECT user_id 
        FROM staff s
        WHERE s.first_name LIKE 'ABC%'
        ),
        shift_type_id = (
        SELECT shift_type_id 
        FROM shifts h
        WHERE h.shift_type LIKE 'ABC%'
        ),
        type_call_id = (
        SELECT type_call_id 
        FROM on_call c 
        WHERE c.type_of_call LIKE 'ABC%')
    WHERE date_key = @date_key
END

我引用了this question来获得LIKE' ABC%'代码,看看是否有助于转换"小学"进入' 1',但这并没有完全回答我的问题

我还研究了this answer from John,看看在运行更新查询时是否需要加入,但这并没有完全回答我的问题。

0 个答案:

没有答案