[英]Selecting column name from other database table through function in PostgreSQL
在這里,我需要使用函數(存儲過程)選擇列名,該函數使用PostgreSQL存在於其他數據庫表中。
我有sql server查詢,如下所示。
例:
create procedure sp_testing
as
if not exists ( select ssn from testdb..testtable) /*ssn is the column-name of testtable which exists in testdb database */
...
問:我可以在PostgreSQL中做同樣的事情嗎?
您的問題不是很清楚,但如果您想知道某個名稱中的某個列是否存在於遠程PostgreSQL數據庫中某個名稱的表中,那么您應首先設置一個外部數據包裝器 ,這是一個多個階段過程。 然后,要測試表中某個列的存在,您需要制定一個符合您要連接的特定DBMS標准的查詢。 使用遠程information_schema.tables
表以獲得最佳兼容性(此處指定為您必須使用先前的CREATE FOREIGN TABLE
命令定義的remote_tables
):
CREATE FUNCTION sp_testing () AS $$
BEGIN
PERFORM *
FROM remote_tables
WHERE table_name = 'testtable'
AND column_name = 'ssn';
IF NOT FOUND THEN
...
END IF;
END;
$$ LANGUAGE plpgsql;
如果要連接到另一種類型的DBMS,則需要在fi C或perl中編寫一些自定義函數,然后在本地計算機上的PostgreSQL函數中調用它。 然后,對函數內部的測試最好在函數內部進行,因此應該將連接參數,表名和列名作為參數,並返回一個布爾值來通知結果。
在開始測試之前,請確保您已閱讀有關連接到遠程服務器的所有文檔 ,並且首先學習PL / pgSQL也是一個很好的姿態,可以在您尋求幫助之前展示自己的努力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.