0

它是知道SQL Server提供瞭如用戶定義函數,存儲過程,觸發器一些擴展機制......Postgres的模擬的C#SQL Server's存儲過程CLR

我有C#代碼在運行SQL Server 2008年(這是使用Visual Studio 2008年部署在DBMS存儲過程,然後exec dbo.SP_Analysis 'MyTable','Colum1,Column2',300,0命令是用來獲取在SQL Server 2008中的結果)定義爲:

using System; 
using System.Collections.Generic; 
using System.Text; 
using System.Security; 
using System.Runtime.InteropServices; 
using System.Data; 
using System.Data.SqlClient; 
using System.Data.SqlTypes; 
using Microsoft.SqlServer.Server; 

public partial class StoredProcedures 
{    
    [Microsoft.SqlServer.Server.SqlProcedure] 
    public static void SP_Analysis(
    SqlString table, [SqlFacet(MaxSize = -1)] SqlString columns, 
    int Nocustomers, 
    Boolean result) 
    { 
    String query = ""; 

    using (SqlConnection conn = new SqlConnection("context connection=true")) 
    { 
     conn.Open(); 
     SqlCommand cmd = conn.CreateCommand(); 
     query = "SELECT " + (String)columns + " FROM " + (String)table + ";"; 
     cmd.CommandText = query; 
     SqlDataReader reader = cmd.ExecuteReader(); 
     MyObject _myObject = new Object(Nocustomers); 
     while (reader.Read()) 
      _myObject.read(reader); 
     reader.Close();   
     conn.Close(); 
     } //END SqlConnection conn 
    }   
} 

class MyObject 
{ 
    int NoCustomers; 
    //some definitions 

    public MyObject(int NoCustomers) 
    { 
    this.NoCustomers = NoCustomers; 
    //some stuff 
    } 

    public void read(SqlDataReader reader) 
    { 
    Object[] record = new Object[NoCustomers]; 
    reader.GetValues(record); 
    //more stuff 
    } 
} 

很顯然,我使用.NET c#可用語言,然後通過Visual Studio 2008部署它以在SQL Server 2008中創建存儲過程。

現在我的問題是Postgres中所有這些類似的東西嗎?

  1. 有什麼語言可以擴展Postgres的功能?
  2. Visual Studio有什麼類似的方法可以在Postgres中部署UDF?
  3. Postgres的exec dbo.UDF的模擬是什麼?

我讀的是Postgres使用C語言來定義的UDF也許C++ 但其他人我不知道......

回答

4
  1. PL/Python的,PL/Perl裏,PL/Java中,PL/TCL,PL/V8(JavaScript)和C程序。不過,對於大多數工作,您只需使用PL/PgSQL,即程序的擴展版SQL。

  2. 沒有一個,真的。 PgAdmin-III排序。你只需要execute SQL commands to create functionsin the case of C procedures, you use a Makefile with PGXS

  3. 不知道,在SQL Server中做了什麼?文件鏈接?如果它只是「調用這個程序」,然後SELECT my_function();

+0

是的,執行程序在SQL中執行存儲過程,所以它是一種在SQL Server中使用C#的強大功能的方式,但是能否解釋更多的2個答案? – cMinor

+0

@cMinor添加了文檔鏈接。 –

1

PostgreSQL支持。存儲過程語言的數量,包括PL/SQL風格,一個基於Perl,一個在Python上,另一個在Tcl上。

PL/pgSQL是一種塊結構化語言,它直接嵌入SQL,與Oracle的PL/SQL非常相似。

+0

是否可以使用C甚至C++語言編寫存儲過程或udf? – cMinor

+0

是的:http://www.postgresql.org/about/ –