Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 检查另一个表中是否存在id_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 检查另一个表中是否存在id

Sql server 检查另一个表中是否存在id,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我有一个Customer表和一个order表,在允许我执行脚本的其余部分之前,我正在尝试检查以确保order表中的客户存在于Customer表中 这是导致问题的代码 alter proc Order @CustomerID int as Declare @CusID int select @CusID = dbo.CustomerTable.CustomerID from dbo.CustomerTable inner join dbo.OrdersTable on dbo

我有一个Customer表和一个order表,在允许我执行脚本的其余部分之前,我正在尝试检查以确保order表中的客户存在于Customer表中

这是导致问题的代码

    alter proc Order
  @CustomerID int
  as
Declare @CusID int


select @CusID = dbo.CustomerTable.CustomerID
 from dbo.CustomerTable
inner join dbo.OrdersTable
on dbo.CustomerTable.CustomerID
= dbo.OrdersTable.CustomerID
 where dbo.OrdersTable.CustomerID = @CustomerID

if(@CusID != @CustomerID)
 begin
raiserror('The customer does not exist')
return 1
end

 exec Order 44

当我尝试使用不在表中的CustomerID执行脚本时,它不会给我错误消息。任何帮助都将不胜感激。

alterprocedure dbo.[Order]--我刚刚输入完几乎完全相同的内容,这时出现了“new answer”消息。显然,您仍然需要在过程中执行“exec Order 44”。如果您看到名称,op试图执行过程本身,两个过程都称为
Order
:),我还认为这是过程内部的另一个过程调用,但不是。
ALTER PROCEDURE dbo.[Order]  --<-- Avoid using key words for object names
@CustomerID int
AS
BEGIN
  SET NOCOUNT ON;
IF NOT EXISTS
            (select 1
            from dbo.CustomerTable inner join dbo.OrdersTable
            on dbo.CustomerTable.CustomerID = dbo.OrdersTable.CustomerID
            where dbo.OrdersTable.CustomerID = @CustomerID)
 BEGIN
   RAISERROR('The customer does not exist', 16,1)
   RETURN 1
 END
    RETURN @CustomerID;
END
DECLARE @RtnValue INT;

EXECUTE @RtnValue =  dbo.[Order] 44

SELECT @RtnValue;    --<-- now you can use this value whatever you want to do with it
IF @CusID IS NULL
    BEGIN    
    raiserror('The customer does not exist', 0, 1)
    RETURN 1
    END