sql - 什么是准备好的陈述?它们与动态sql有何不同?

标签 sql sql-server database

我没有看到任何重复的问题,但想知道是否有人可以提供一些很好的例子,特别是围绕这些问题的最佳实践。

最佳答案

准备好的语句是预编译语句,您可以在数据库上对其运行多次,并且 SQLServer 不会在您每次运行它时解析或生成不同的执行计划。通常,您在客户端上下文中运行准备好的语句(使用 JDBC、ADO.NET、ODBC 或任何其他客户端访问技术)。

Java 中的预准备语句(当然使用 JDBC)类似于:

PreparedStatement ps = conn.prepareStatmente("insert into t(field1) values (?)");
ps.setString(1, "Hello");
ps.executeUpdate();
ps.setStrgin(2, "World");
ps.executeUpdate();
ps.close();
// two rows will be inserted into table t:
// field1 => "Hello"
// field1 => "world"

Dynamic SQL是运行 SQLServer 中存储过程或函数内动态变量(即字符串)中存储的任何 SQL 语句的能力。您可以在提供的链接中找到一些示例。

关于sql - 什么是准备好的陈述?它们与动态sql有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3553120/

相关文章:

php - PHP 中的表单验证问题

sql - 按分隔符将 T-SQL 字符串拆分为列?

c# - SqlConnection支持多少个并发语句

mysql - 我应该拆分一个包含大量数据的表吗?

sql - 关键字 'TOP' 附近的语法不正确。数据库服务器

mysql - 使用单独的更新列插入重复键更新批处理

c# - Ado.net 从多线程调用存储过程比单线程慢

java - 在数据库中存储巨大的 HashMap

database - 如何知道oracle数据库服务器ip?

sql - 如何降低 SQL Server VIEW 的速度?