我正在做一项 SQL 作业,它把我逼到了崩溃的边缘。
*这些是存储过程的要求:
存储过程完成后,运行
EXEC dbo.Get_ListOfEmployeeInZip '98055'
或 EXEC dbo.Get_ListOfEmployeeInZip '55402'
,例如,应该会找到这些邮政编码中的员工。
这是我的存储过程的代码:
CREATE PROCEDURE Get_ListOfEmployeeInZip
@zip AS NVARCHAR(10)
AS
SELECT E.FirstName, E.LastName, E.JobTitle, H.Department, E.PhoneNumber, E.PostalCode, E.CountryRegionName
FROM CS120Exam_Employee AS E
JOIN CS120Exam_EmployeeDepartmentHistory AS H
ON H.BusinessEntityID = E.BusinessEntityID
WHERE E.CountryRegionName IN ('US', 'Other Country')
AND E.PostalCode = @zip;
GO
当我尝试搜索特定区号时,我的结果没有任何结果。它显示了数据应该在的表,但它只是空的。如果我只是运行 EXEC dbo.Get_ListOfEmployeeInZip,我会收到一条错误消息:
消息 201,级别 16,状态 4,过程 dbo.Get_ListOfEmployeeInZip3,第 0 行 [批量起始行 0]
过程或函数“Get_ListOfEmployeeInZip3”需要参数“@zip”,但未提供该参数。
我已经为此工作了大约 12 个小时,但我已经束手无策了。
您的 select 语句在没有存储过程的情况下也能工作吗?
错误是正常的,因为调用不带参数的 sp 总是会返回错误。我能想到的唯一可行的问题是您的 select 语句一般不会返回任何内容。
先试试这个
SELECT E.FirstName, E.LastName, E.JobTitle, H.Department, E.PhoneNumber, E.PostalCode, E.CountryRegionName
FROM CS120Exam_Employee AS E
JOIN CS120Exam_EmployeeDepartmentHistory AS H
ON H.BusinessEntityID = E.BusinessEntityID
WHERE E.CountryRegionName IN ('US', 'Other Country')
AND E.PostalCode = '11379';
-- 或任何其他 zipcde
看看它是否返回任何东西,如果没有,那就是你的问题