命名預存程序 - Amazon Redshift

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

命名預存程序

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

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

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

多載程序名稱

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

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

防止命名衝突

建議您使用前綴來命名所有程序。sp_。Amazon Redshift 保留sp_前綴專供預存程序使用。通過在您的過程名稱前加上sp_,您可以確保程序名稱不會與任何現有或未來的 Amazon Redshift 程序名稱相衝突。