如何判斷SQLSERVER存儲過程是否正在執行
select * from master.dbo.sysprocesses
-- 列出 spid > 50 的.
對每個 spid 用 dbcc inputbuffer(spid) 看執行的文本, 如果搜索完所有的 spid, 其執行的文本中都沒有包括你的存儲過程.
則基本上可判斷出存儲過程未執行.
❷ 判斷存儲過程是否存在
----sqlserver判斷
if(exists(select*fromsys.objectswherename='存儲過程名稱'))
dropprocproc_test
go
create.....
----oracle判斷
selectstatusfromall_objectswhereobject_type='PROCEDURE'andOWNER='用戶名'andobject_name='存儲過程名';
or
selectstatusfromuser_objectswhereobject_type='PROCEDURE'andobject_name='存儲過程名';
有問題再追問。
❸ oracle 用if sqlcode != 0 來判斷sql語句是否成功 sqlserver 存儲過程 怎樣判斷一條sql語句執行成功了沒有
返回執行的上一個 Transact-SQL 語句的錯誤號。
Transact-SQL 語法約定
語法
@@ERROR
返回類型
integer
備注
如果前一個 Transact-SQL 語句執行沒有錯誤,則返回 0。
如果前一個語句遇到錯誤,則返回錯誤號。如果錯誤是 sys.messages 目錄視圖中的錯誤之一,則 @@ERROR 將包含 sys.messages.message_id 列中表示該錯誤的值。可以在 sys.messages 中查看與 @@ERROR 錯誤號相關的文本信息。
由於 @@ERROR 在每一條語句執行後被清除並且重置,因此應在語句驗證後立即查看它,或將其保存到一個局部變數中以備以後查看。
使用 TRY...CATCH 構造來處理錯誤。TRY...CATCH 構造也支持其他返回的錯誤信息多於 @@ERROR 的系統函數(ERROR_LINE、ERROR_MESSAGE、ERROR_PROCEDURE、ERROR_SEVERITY 和 ERROR_STATE)。TRY...CATCH 也支持 ERROR_NUMBER 函數,但不限制該函數在語句產生錯誤後立即在語句中返回錯誤號。有關詳細信息,請參閱 TRY...CATCH (Transact-SQL)。
示例
A. 用 @@ERROR 檢測一個特定錯誤
以下示例用 @@ERROR 在 UPDATE 語句中檢測約束檢查沖突(錯誤 #547)。
復制代碼
USE AdventureWorks;
GO
UPDATE HumanResources.EmployeePayHistory
SET PayFrequency = 4
WHERE EmployeeID = 1;
IF @@ERROR = 547
PRINT N'A check constraint violation occurred.';
GO
B. 用 @@ERROR 有條件地退出一個過程
在此示例中,IF...ELSE 語句在存儲過程中的 INSERT 語句後檢測 @@ERROR。@@ERROR 變數的值將決定發送給調用程序的返回代碼,以指示此過程的成功與失敗。
復制代碼
USE AdventureWorks;
GO
-- Drop the procere if it already exists.
IF OBJECT_ID(N'HumanResources.usp_DeleteCandidate', N'P') IS NOT NULL
DROP PROCEDURE HumanResources.usp_DeleteCandidate;
GO
-- Create the procere.
CREATE PROCEDURE HumanResources.usp_DeleteCandidate
(
@CandidateID INT
)
AS
-- Execute the DELETE statement.
DELETE FROM HumanResources.JobCandidate
WHERE JobCandidateID = @CandidateID;
-- Test the error value.
IF @@ERROR <> 0
BEGIN
-- Return 99 to the calling program to indicate failure.
PRINT N'An error occurred deleting the candidate information.';
RETURN 99;
END
ELSE
BEGIN
-- Return 0 to the calling program to indicate success.
PRINT N'The job candidate has been deleted.';
RETURN 0;
END;
GO
C. 與 @@ROWCOUNT 一同使用 @@ERROR
下面的示例用 @@ERROR 和 @@ROWCOUNT 驗證一條 UPDATE 語句的操作。為任何可能出現的錯誤而檢驗 @@ERROR 的值,而用 @@ROWCOUNT 保證更新已成功應用於表中的某行。
❹ sql server存儲過程判斷
create procere procName
@id int
as
if(exists(select * from tableName where id=@id))
begin
update tableName
set columnName='value'
end
else
begin
insert into tableName
values('values1','values2')
end
❺ SqlServer存儲過程判斷select a表的結果是否存在,存在就輸出結果,不存在就執行另一段select b表
ifexists(select*froma)
select*froma
else
select*fromb
❻ 小白求教:用SQLServer存儲過程寫一個判斷
----@Value 是指欄位的值如你查 XXX'
--@Msg 輸入 如件數為0 則 輸出為 OK
create proceudre PgetMsg
@Value varchar(100),@Msg varchar(20) output
AS
declare @Sum numeric(18,4)
select @Sum =sum(件數) from tab where A=@Value
if @sum=Isnull(@sum,0)
set @Msg='OK'
else
set @Msg=''
-----------------------
--結束
❼ 用Sqlserver存儲過程實現判斷已知經緯度點是否在指定多邊形區域內
判斷指定的經緯度坐標點是否落在指定的多邊形區域內@paramALon指定點的經度@paramALat指定點的緯度@paramAPoints指定多邊形區域各個節點坐標@returnTrue落在范圍內False不在范圍內-