Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 server 需要有关SQL连接到函数的帮助吗_Sql Server_Triggers_User Defined Functions - Fatal编程技术网

Sql server 需要有关SQL连接到函数的帮助吗

Sql server 需要有关SQL连接到函数的帮助吗,sql-server,triggers,user-defined-functions,Sql Server,Triggers,User Defined Functions,我正在尝试输入以下内容以更新QuoteItem触发器: UPDATE QuoteItem SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL FROM dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId) AS StyleItem CROSS JOIN (QuoteItem JOIN INSERTED ON

我正在尝试输入以下内容以更新QuoteItem触发器:

UPDATE QuoteItem
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL
FROM dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId) 
    AS StyleItem
CROSS JOIN (QuoteItem JOIN INSERTED ON 
    QuoteItem.QuoteItemId = INSERTED.QuoteItemId)
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL)
我得到以下错误:

Msg 4104, Level 16, State 1, Procedure QuoteItem_UPDATE, Line 6
The multi-part identifier "QuoteItem.ItemId" could not be bound.
Msg 4104, Level 16, State 1, Procedure QuoteItem_UPDATE, Line 6
The multi-part identifier "QuoteItem.RoomId" could not be bound.
尝试我在上面所做的更改,分配一个表别名xx并引用它。

由Naomi Nosonovsky找到的答案:

UPDATE QuoteItem
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL
FROM QuoteItem JOIN INSERTED AS INSERTED ON QuoteItem.QuoteItemId =
    INSERTED.QuoteItemId
    CROSS APPLY dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId)
        AS StyleItem 
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL)

Msg 102,级别15,状态1,过程QuoteItem_UPDATE,第13行“xx”附近的语法不正确。很抱歉,我没有打开SQL,但尝试在xx之后添加1=1。另外,为什么需要交叉连接,您不能直接从插入的表中引用ItemID和RoomId?因为您可以看到它是一个多值udf,例如,返回表和我需要的交叉连接,因为我想更新QuoteItem受影响的行-插入的表无法更新。正如你可以猜到的那样,这个函数也做了一些计算,这就是我需要它的方式
UPDATE QuoteItem
SET List = StyleItem.List, CostFactor = StyleItem.CostFactor, Cost = NULL
FROM QuoteItem JOIN INSERTED AS INSERTED ON QuoteItem.QuoteItemId =
    INSERTED.QuoteItemId
    CROSS APPLY dbo.fn_GetQuoteItemListPrice(QuoteItem.ItemId, QuoteItem.RoomId)
        AS StyleItem 
WHERE (INSERTED.List IS NULL) AND (INSERTED.ItemId IS NOT NULL)