c# - SQL Server CLR 和 T-SQL 存储过程与调用者是否相同?

标签 c# sql-server stored-procedures clrstoredprocedure

为了编写一些虚拟存储过程,我想知道是否可以用 C# 编写它们,因为我不太了解 T-SQL。

同一过程的 C# 和 T-SQL 版本是否无法区分调用代码,例如使用标准数据库库类的 C++/C#/Java 代码?

最佳答案

是的,调用者不会知道其中的区别。但是,存在一些 API 差异:


除了问题的技术答案之外,还有一些事情需要考虑:

  • 您特别认为在 C# 中比在 T-SQL 中更容易完成什么?
  • 究竟什么被认为是“虚拟”?你只需要一个签名吗?如果是这样,那么在纯 T-SQL 中执行此操作会容易得多。 T-SQL 执行模拟存储过程所需要做的就是:

    CREATE PROCEDURE SchemaName.ProcedureName
    (
      @Param1name  Param1Type,
      @Param2name  Param2Type,
      ...
    )
    AS
    SELECT  CONVERT(resultField1type, NULL) AS [resultField1name],
            CONVERT(resultField2type, NULL) AS [resultField2name],
            ...
                ;
    
  • 术语“dummy”意味着这些将在以后被其他东西取代。他们将被什么取代? T-SQL 存储过程?如果您不知道 T-SQL,谁来编写这些内容?

  • 如果您不了解 T-SQL,并且没有任何了解 T-SQL 的人帮助您(因此需要在 SQLCLR 中创建“虚拟”存储过程),那么您怎么知道您是否正确构建了这个解决方案?无论 T-SQL 还是 SQLCLR,您都可能会朝着完全错误的方向前进。

关于c# - SQL Server CLR 和 T-SQL 存储过程与调用者是否相同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35923331/

相关文章:

c# - Windows Phone 8 中的语音识别

sql - 设置在多个 SQL 选择查询中使用的条件

c# - SQLDataReader 抛出异常失败

sql-server - 如何将数据从 ELK 传输到 SQL Server?

c# - 服务地点方便

c# - 如何通过 GetPixel 方法比较颜色和通过 Color.Black 等方法传递的颜色?

mysql - 我可以在存储过程中使用 mysqlimport/LOAD DATA LOCAL INFILE

java - Java中使用存储过程输出数据

.net - MySQL Entity Framework 4.0 存储过程字段映射

c# - 我是否需要 iOS 或 Android 设备才能使用 Visual Studio 和 Xamarin 编写应用程序