2016-12-03 69 views
0

我需要能夠在允許在單獨的表格中輸入之前檢查不同的表格的值。 在oracle中,他們不允許在檢查子查詢,所以我想做一個功能...如何從select查詢中檢查oracle sql中的字符?

CREATE OR REPLACE FUNCTION chktrain(tid integer) 
    RETURN INTEGER 
    AS 
    chk1 char; 
    BEGIN 
    SELECT chk1 = (select train from trainer where trainer.trainer_id = tid); 
    IF chk1 = 'Y' THEN 
    return 1; 
    ELSE 
    return 0; 
    END IF; 
    END; 

這是行不通的,因爲我無法設置CHK1子查詢。有沒有辦法做到這一點?

+0

請標記您的問題是'mysql'或'oracle'不能同時使用。 – Kacper

回答

0

我相信你正在尋找SELECT INTO statement

我不完全確定你需要使用你正在創建的這個函數,但我也不確定我完全理解你正在嘗試做什麼。也許看看觸發器,特別是BEFORE INSERT triggers,這可能允許您查找參考表並且每次在表上插入數據時都可能會轉換一個值。

+0

我正在研究觸發器。當我嘗試檢查(myfunction(tid)= 1)時,它說我無法引用其他列。 – ryan151

+0

不理解觸發器如何幫助我。我只需要檢查另一個表中的一個值,然後如果該值爲「是」而不是「否」,則繼續插入。爲什麼如果函數總是隻返回一個字符,那麼函數就不會工作 – ryan151

0

你可能會覺得這個文檔很有趣也很有幫助。 您會在if語句的語法和有關if語句的不同形式的使用細節中找到鐵路圖。

https://docs.oracle.com/cd/B19306_01/appdev.102/b14261/if_statement.htm

在頁面的末端有SELECT INTO語句的一個例子。

(從trainer trainer.trainer_id = tid選擇列車INTO chk1);

+0

您需要爲通過捕獲直接回答問題的文章的關鍵方面而共享的鏈接提供上下文 - 這種方式即使鏈接是刪除你的答案仍然會有所幫助。 – ishmaelMakitla

+0

@ishmaelMakitla謝謝。我將確保在回答問題時閱讀幫助中心頁面。 –

0

您正在尋找SELECT INTO聲明像

SELECT train into chk1 from trainer 
where trainer_id = tid;