當前位置:首頁 » 編程語言 » sqlprocedureif

sqlprocedureif

發布時間: 2022-06-17 21:51:26

1. 很簡單的問題!!資料庫PL/sql中IF語句的用法!!

sal >= 2*nvl(sal_avg-sal_stddev,0) AND sal <= (2*nvl(sal_avg,0)+nvl(sal_stddev,0))

2. SQL語言if語句

if exists(select * from jy0702 a,jy0701 b where a.籍貫=b.籍貫)
select a.籍貫 from jy0702 a,jy0701 b where a.籍貫=b.籍貫
else select null

感覺這么寫簡單一點吧

3. SQL 中存儲過程怎麼使用

一、簡單的儲存過程:

1、創建一個存儲過程

create procere GetUsers()

begin

select * from user;

end;12345

2、調用存儲過程

call GetUsers();12

3、刪除存儲過程

drop procere if exists GetUsers;

二、帶參數的存儲過程

1、MySql 支持 IN (傳遞給存儲過程) , OUT (從存儲過程傳出) 和 INOUT (對存儲過程傳入和傳出) 類型的參數 , 存儲過程的代碼位於 BEGIN 和 END 語句內 , 它們是一系列 SQL 語句 , 用來檢索值 , 然後保存到相應的變數 (通過指定INTO關鍵字) ;

2、下面的存儲過程接受三個參數 , 分別用於獲取用戶表的最小 , 平均 , 最大分數 , 每個參數必須具有指定的類型 , 這里使用十進制值(decimal(8,2)) , 關鍵字 OUT 指出相應的參數用來從存儲過程傳出

create procere GetScores(

out minScore decimal(8,2),

out avgScore decimal(8,2),

out maxScore decimal(8,2)

)

begin

select min(score) into minScore from user;

select avg(score) into avgScore from user;

select max(score) into maxScore from user;

end;1234567891011

3、調用此存儲過程 , 必須指定3個變數名(所有 MySql 變數都必須以@開始) , 如下所示 :

call GetScores(@minScore, @avgScore, @maxScore);12

4、該調用並沒有任何輸出 , 只是把調用的結果賦給了調用時傳入的變數@minScore, @avgScore, @maxScore, 然後即可調用顯示該變數的值 :

select @minScore, @avgScore, @maxScore;

5、使用 IN 參數 , 輸入一個用戶 id , 返回該用戶的名字 :

create procere GetNameByID(

in userID int,

out userName varchar(200)

)

begin

select name from user

where id = userID

into userName;

end;12345678910

6、調用存儲過程 :

call GetNameByID(1, @userName);

select @userName;123

4. sql 存儲過程中 用case when 替代if else

SQL中的case when 只能用在查詢語句中,不能單獨使用,由於每個條件查詢的表都不一樣,改寫不能

5. 在sql server2012中,if語句怎樣顯示select的結果我的只有返回值。在線等。代碼如下

--用這個 我測試過了
CREATE Procere stu_age
@sno char(3)
,@return nvarchar(2)=null
AS BEGIN
--& ISNUMERIC(@sno) 如果你這地方是判斷是否是數字 就這樣寫 & ISNUMERIC(@sno)=1
--你這樣寫是沒有意義的
IF LEN(@sno)=3
BEGIN
SELECT @return=DATEDIFF(YEAR,sbirthday,GETDATE())
FROM student
WHERE sno=@sno
print @return
END
ELSE
BEGIN
print ('返回失敗');
END
END

6. DB2 SQL PROCEDURE 中SIGNAL和RESIGNAL的含義和用法

可以通過SIGNAL和RESIGNAL來顯示的觸發一個指定的SQLSTATE.使用SIGNAL和RESIGNAL的MESSAGE_TEXT來設定伴隨SQLSTATE的文本信息(可以理解為錯誤信息)。

在下面的例子中,在SQL procere定義了一個處理自定義SQLSTATE 72822的條件處理器(condition handler)。當執行SIGNAL 72822語句時,DB2調用條件處理器(Condition Handler),該條件處理器首先通過IF語句測試變數var,如果var等於OK,處理器重新定義SQLSTATE為72623,並且指定了一個text,如果var不等於OK時,處理器重新定義SQLSTATE為72319,同時指定一個text。

DECLARE EXIT HANDLER FOR SQLSTATE '72822' BEGIN IF ( var = 'OK' ) RESIGNAL SQLSTATE '72623' SET MESSAGE_TEXT = 'Got SQLSTATE 72822'; ELSE
RESIGNAL SQLSTATE '72319'
SET MESSAGE_TEXT = var;
END;

SIGNAL SQLSTATE '72822';

7. sql程序創建存儲過程

create
procere
p_1(@參數1
類型,@參數2
類型)
as來定義帶參數的存儲過程,這樣存儲過程裡面就可以使用你傳遞過來的參數了。跟平時寫但參數的函數是一樣的。
然後你調用的時候
exec
p1(參數1,參數2)

8. pl/sql if then語法

會不會是你 那個條件裡面, 有括弧沒有合上啊?


SQL>DECLARE
2testvalueINT;
3BEGIN
4testvalue:=100;
5
6IFtestvalue>100THEN
7dbms_output.put_line('100+');
8ELSIFtestvalue=100THEN
9dbms_output.put_line('100');
10ELSE
11dbms_output.put_line('100-');
12ENDIF;
13
14END;
15/
100

PL/.

9. 動態執行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 保證更新已成功應用於表中的某行。

熱點內容
原神遊戲伺服器ip 發布:2025-02-06 17:54:23 瀏覽:810
如何查筆記本電腦的真正配置 發布:2025-02-06 17:48:07 瀏覽:81
存儲器存在地址 發布:2025-02-06 17:47:28 瀏覽:539
phpsocket教程 發布:2025-02-06 17:42:13 瀏覽:423
mysql解壓縮版安裝 發布:2025-02-06 17:26:33 瀏覽:179
phpgd圖片 發布:2025-02-06 17:24:34 瀏覽:206
php代碼整理 發布:2025-02-06 17:24:31 瀏覽:477
java可執行文件 發布:2025-02-06 17:18:59 瀏覽:249
衛士相當於現在什麼配置 發布:2025-02-06 17:05:04 瀏覽:409
項目編譯慢 發布:2025-02-06 16:53:48 瀏覽:382