命名預存程序 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

命名預存程序

如果您定義的程序有相同名稱和不同的引數資料類型 (或簽章),則會建立新程序。因此,程序名稱會多載。如需詳細資訊,請參閱多載程序名稱。Amazon Redshift 不會啟用根據輸出引數的程序多載。您不能有兩個程序是具有相同的名稱和輸入引數資料類型,但卻有不同的輸出引數類型。

擁有者或超級使用者可以將預存程序的主體換成具有相同簽章的預存程序。若要變更預存程序的簽章或傳回類型,請捨棄預存程序再重新建立。如需詳細資訊,請參閱 DROP PROCEDURECREATE PROCEDURE

在實作預存程序之前,您可以考量命名慣例,以避免潛在的衝突和非預期的結果。因為您可以多載程序名稱,它們可能會與現有和未來的 Amazon Redshift 程序名稱相衝突。

多載程序名稱

程序是以其名稱和簽章來識別,而簽章是輸入引數的數目和引數的資料類型。如果相同結構描述中的兩個程序具有不同的簽章,則它們可以具有相同的名稱。換言之,您可以過載程序名稱。

當您執行程序時,查詢引擎會根據您提供的引數數目和引數的資料類型,以決定要呼叫哪個程序。您可以使用過載來模擬具有可變引數數目的程序,而此數目最多可為 CREATE PROCEDURE 命令允許的限制。如需詳細資訊,請參閱CREATE PROCEDURE

防止命名衝突

我們建議您在所有程序名稱前加上 sp_。Amazon Redshift 專門為預存程序保留 sp_ 字首。您可以在程序名稱前方加上 sp_,以確保程序名稱不會與任何現有或未來的 Amazon Redshift 程序名稱相衝突。