簡體   English   中英

在存儲過程sql中未設置參數仍傳遞值

[英]Parameter not set still passing value in stored procedure sql

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存儲過程中,未在任何其他存儲過程或Jobs中未設置值的任何地方都未定義參數@ name,@ DataVal,@ MonthVal,@ YearVal。 但是它仍然傳遞值,並且在目標表中更新值。

如果還有另一個過程或觸發器調用您的proc,您將在sys.sql_module中找到它:

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

如果不存在,則至少存在三種可能的情況:

  • 有一個鏈接服務器正在調用您的服務器
  • 有一個外部應用程序
  • 有人從ssms調用它

您可能正在與null比較,嘗試添加and type IS NOT NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM