Sql server 2005 更新else Insert-预期未提供的参数错误
谢谢你的耐心。。。我不是SQL方面的专家,非常感谢您的帮助。 使用SQLServer2005 两个表格-Sql server 2005 更新else Insert-预期未提供的参数错误,sql-server-2005,insert,if-statement,Sql Server 2005,Insert,If Statement,谢谢你的耐心。。。我不是SQL方面的专家,非常感谢您的帮助。 使用SQLServer2005 两个表格-潜在客户和会议。我正在尝试使用If Exists update else Insert更新/创建记录 我在会议表中有一个Leads\u ID列,并使用该列检查lead在会议表中是否有记录,如果该记录更新,则插入 运行此SP时,我会收到“预期参数'@ID',该参数未提供”错误,但我正在传递ID,不是吗 ALTER PROCEDURE [dbo].[leadfollowup] @ID AS
潜在客户
和会议
。我正在尝试使用If Exists update else Insert更新/创建记录
我在会议
表中有一个Leads\u ID
列,并使用该列检查lead在会议表中是否有记录,如果该记录更新,则插入
运行此SP时,我会收到“预期参数'@ID',该参数未提供”错误,但我正在传递ID,不是吗
ALTER PROCEDURE [dbo].[leadfollowup]
@ID AS NVARCHAR(55),
@NAME AS nvarchar (50)
AS
IF EXISTS(SELECT * FROM MEETINGS WHERE LEADS_ID = @ID)
BEGIN
SET NOCOUNT ON;
UPDATE MEETINGS SET name = (SELECT TOP 1 FIRST_NAME FROM LEADS ORDER BY DATE_MODIFIED DESC)
WHERE LEADS_ID = @ID
IF @@ROWCOUNT=0
INSERT INTO MEETINGS (LEADS_ID,NAME)
SELECT TOP 1 L.ID, first_name +' '+Last_name +' 'as NAME
FROM LEADS_CSTM lc
JOIN LEADS l on l.id = lc.id_c WHERE FOLLOW_UP_DATE_C >getdate()
ORDER BY l.date_modified Desc
END
谢谢你的帮助 假设我正确阅读了您的程序,您的逻辑是 如果会议表中有一行在leads id上与参数匹配,我们将执行“一堆垃圾”。如果会议不存在,则没有其他条款 我不认为这与你的问题有关,但这是我首先想到的。我猜测了一下您对proc的意图,并使用BEGIN/END proc重置代码,以明确块的位置
ALTER PROCEDURE [dbo].[leadfollowup]
@ID AS NVARCHAR(55),
-- this parameter is never used
@NAME AS nvarchar (50)
AS
BEGIN
SET NOCOUNT ON
IF EXISTS(SELECT * FROM MEETINGS WHERE LEADS_ID = @ID)
BEGIN
SET NOCOUNT ON;
UPDATE
MEETINGS
SET name =
-- this logic probably is incorrect in a concurrent system
(SELECT TOP 1 FIRST_NAME FROM LEADS ORDER BY DATE_MODIFIED DESC)
-- this is also probably where you'd use @name parameter
WHERE LEADS_ID = @ID
END
ELSE
BEGIN
INSERT INTO
MEETINGS
(
LEADS_ID
, NAME
)
SELECT TOP 1
L.ID
, first_name +' '+Last_name +' 'as NAME
FROM LEADS_CSTM lc
JOIN LEADS l
ON l.id = lc.id_c
WHERE
FOLLOW_UP_DATE_C >getdate()
ORDER BY
l.date_modified Desc
END
END
这就是我想出的有效的方法。。。我不知道这是否是最好的答案
ALTER PROCEDURE [dbo].[leadfollowup]
AS
Declare @ID NVARCHAR (55)
set @ID = (Select top 1 ID from leads order by Date_Modified desc)
Declare @NAME NVARCHAR (50)
set @NAME = (select top 1 first_name +' '+Last_name +' 'as NAME from leads order by Date_Modified desc)
SET NOCOUNT ON;
SELECT LEADS_ID FROM MEETINGS WHERE LEADS_ID = (Select top 1 ID from leads order by Date_Modified desc)
IF EXISTS(SELECT LEADS_ID FROM MEETINGS WHERE LEADS_ID = @ID )
BEGIN
UPDATE MEETINGS SET name = @NAME WHERE ID = @ID
END
ELSE
BEGIN
INSERT INTO MEETINGS (leads_ID,Name)
values(@ID,@NAME)
END
ALTER PROCEDURE [dbo].[leadfollowup]
AS
Declare @ID NVARCHAR (55)
set @ID = (Select top 1 ID from leads order by Date_Modified desc)
Declare @NAME NVARCHAR (50)
set @NAME = (select top 1 first_name +' '+Last_name +' 'as NAME from leads order by Date_Modified desc)
SET NOCOUNT ON;
SELECT LEADS_ID FROM MEETINGS WHERE LEADS_ID = (Select top 1 ID from leads order by Date_Modified desc)
IF EXISTS(SELECT LEADS_ID FROM MEETINGS WHERE LEADS_ID = @ID )
BEGIN
UPDATE MEETINGS SET name = @NAME WHERE ID = @ID
END
ELSE
BEGIN
INSERT INTO MEETINGS (leads_ID,Name)
values(@ID,@NAME)
END