簡體   English   中英

通過PostgreSQL中的函數從其他數據庫表中選擇列名

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM