存储过程空值

时间:2014-03-24 18:54:02

标签: mysql sql sql-server

我正在处理作业,此存储过程的基本功能是让用户输入城市名称并返回该特定城市的员工和客户的名称。我遇到麻烦的地方是,当我运行程序时,它在两列中提供重复的名称而不是空值。我也确定有一种更好的方法可以将这两个表连接起来而不是一个长连接字符串,但我画的是空白。

Create Proc DPCityContacts
 @City Varchar(20)
as
Begin

Select Distinct FirstName+', '+LastName as Employee, CustFirstName+', '+CustLastName as      Customer
into #tmp
from Employee E Join Packingslip PS on E.EmployeeID = PS.EmployeeID 
Join ShippedItem SI on SI.PackageNumber = PS.PackageNumber Join CustOrder 
CO on CO.OrderID = SI.OrderID Join Customer C on C.CustomerID = CO.CustomerID
Where @City = C.City  and @City = E.City and ReleaseDate is null 
Group by FirstName

if exists (select 1 from #tmp)
begin
select *
from #tmp;
end
else 
Print '“No Employees or Customers in the city of '+ @City
end

1 个答案:

答案 0 :(得分:0)

我认为这是你想要的,但我不确定,因为我无法测试。 首先,我不希望所有这些联接,因为City与员工和客户在同一个表中。 在所有情况下,您都希望在客户选择和员工选择之间建立UNION。你不能将这两张桌子连在一起,否则你会得到奇怪的结果。

Select CONCAT(FirstName, ', ', LastName) AS Name, 'EMPLOYEE' AS type
INTO #tmp
FROM Employee
WHERE @City = City and ReleaseDate is null 
UNION
SELECT  CONCAT(CustFirstName, ', ', CustLastName) AS Name, 'CUSTOMER' AS type FROM
Customer 
INTO #tmp
WHERE @City = City and ReleaseDate is null