参数未设置仍在存储过程sql中传递值

时间:2018-05-23 06:34:42

标签: sql sql-server variables stored-procedures parameters

ALTER PROCEDURE  [dbo].[XXXXX]
@type varchar(20)
,@Name varchar(20)
,@DayVal int
,@MonthVal int
,@YearVal int

AS
BEGIN

If type='yyy'
begin
insert into dbo.destinationDB
(name,Dayval,Monthval,Yearval)
values
(@name,@DayVal,@MonthVal,@YearVal)

在SQL Server的上述存储过程中,参数@ name,@ DataVal,@ MonVal,@ YesVal未在任何地方定义,而且在任何其他存储过程或作业中都未设置这些值。但它仍然传递值和值在目标表中更新。

2 个答案:

答案 0 :(得分:2)

如果有另一个程序或触发器调用你的proc,你会在sys.sql_module中找到它:

SELECT OBJECT_NAME(object_id), *
FROM sys.sql_modules
WHERE definition LIKE '%XXXX%' -- your proc name

如果不存在,则至少有3种可能的情况:

  • 有一个链接服务器调用您的服务器
  • 有一个外部应用程序
  • 其他人从ssms
  • 调用它

答案 1 :(得分:0)

您可能正在与null进行比较,请尝试添加and type IS NOT NULL