天道酬勤,学无止境

dml

使用条件休眠更新单列(hibernate update single column using criteria)

问题 我有一个包含 mamy 列的表,我想更新该行的一列或几列而不影响剩余的列,我可以编写查询: update table as t set t.a=:a set t.b=:b where t.id=1 但是看到我不知道会选择更新哪些列,而且我认为每个场景都编写每个查询不是一个好主意。 好吧,我必须为每个场景编写查询,但我正在寻找一种更好的方法来动态更新表。 我认为标准将是一个不错的选择。 但问题是我不知道如何编写标准更新特定列。 我的代码现在可以更新该列,但它会将其他列设置为 null 或空。 在不更改其他列的情况下更新特定列的好方法是什么? 回答1 Hibernate 支持两种基本的方式来更新表的列。 第一个是自然的,通过将实体加载到session ,在运行时更改它,将更改刷新(更新)回数据库。 这是一个标准的ORM 风格。 第二个主要面向非常高效的 SQL UPDATE语句。 此处记录为: 15.4. DML 风格的操作 从文档中引用: ... 但是,Hibernate 提供了通过 Hibernate 查询语言执行的批量 SQL 样式 DML 语句执行的方法... 它不提供用于条件查询的 API,但它可以与 HQL == 一起使用我们的域模型。 我们可以在我们映射的实体之上创建一个 WHERE 子句,并只要求更新我们选择的几列。 有一些限制(不支持 JOIN

2021-09-14 14:01:17    分类:技术分享    hibernate   hibernate-criteria   dml

How to enter new line using sql command INSERT

Q: I wanna to know the syntax of SQL query of inserting new line in my table. I mean ,I wanna to enter the following in my table abc: aaaaaaaaaa bbbbbbbbbb cccccccccccc Maintaining the new line.through INSERT command . Thanks in advance

2021-09-01 07:41:11    分类:问答    sql   newline   informix   dml

动态替换 XML DML 中节点的值(Dynamically replacing the value of a node in XML DML)

问题 我现在正在为此苦苦挣扎:如何替换文本等于某个变量值的无类型 XML 列中节点的值? 是否有可能? 我的 XML: <attrs> <attr>ManualInsert</attr> <attr>ManualInsert2</attr> <attr>ManualInsert4</attr> <attr>ManualInsert8</attr> </attrs> 我的尝试: DECLARE @OldValue Varchar(255) = 'ManualInsert' DECLARE @NewValue Varchar(255) = 'ReplacedValue' UPDATE Labels SET Attributes.modify('replace value of (/attrs/attr/text())[1] with if ((/attrs/attr/text() = sql:variable("@OldValue"))) then sql:variable("@NewValue") else () ') WHERE Id = 2000046 消息: (0 row(s) affected) DECLARE @OldValue Varchar(255) = 'ManualInsert' DECLARE @NewValue Varchar(255) =

2021-08-11 10:38:54    分类:技术分享    sql-server   xml   tsql   xquery   dml

How can Delete be both a DDL and a DML statement

I am currently reading the offical Microsoft book 'Database Administration Fundamentals' in preparation to sitting it's exam. I understand what DDL and DML are but Microsoft show DELETE as being both a DDL and DML statement. I have googled this but I cannot anything that confirms or denies this. A good reference to this is the question: What is DDL and DML Which shows it as a DML. Below is the segments from the book: Data Manipulation Language (DML) is the language element that allows you to use the core statements INSERT, UPDATE, DELETE, and MERGE to manipulate data in any SQL Server tables

2021-08-02 03:00:43    分类:问答    sql   sql-server   tsql   ddl   dml

Dynamically replacing the value of a node in XML DML

I am struggling with this now: How do you replace the value of a node in an untyped XML column where the text is equal to a certain variable value? Is it possible? My XML: <attrs> <attr>ManualInsert</attr> <attr>ManualInsert2</attr> <attr>ManualInsert4</attr> <attr>ManualInsert8</attr> </attrs> My Tries: DECLARE @OldValue Varchar(255) = 'ManualInsert' DECLARE @NewValue Varchar(255) = 'ReplacedValue' UPDATE Labels SET Attributes.modify('replace value of (/attrs/attr/text())[1] with if ((/attrs/attr/text() = sql:variable("@OldValue"))) then sql:variable("@NewValue") else () ') WHERE Id = 2000046

2021-08-01 15:23:29    分类:问答    sql-server   xml   tsql   xquery   dml

T-SQL Updating current row to next row's value issue

I am looking for some advice on what type of update would be the best in a certain scenario for t-sql DML. came into a data issue where end dates are one day before the start date on a current record, and need to set the end date to the start date of the next in row for multiple entities For example rowid entity id record_type start_date end_date 214 250 1 H 2015-01-01 2014-12-31 329 250 1 H 2015-04-25 2015-04-24 533 250 1 C 2015-11-01 NULL 11 250 2 H 2015-06-01 2014-05-29 292 250 2 H 2015-09-11 2015-09-10 987 250 2 C 2015-10-01 NULL What I need to do is update the first record end_date to the

2021-07-31 06:37:07    分类:问答    sql   sql-server   tsql   dml

SQL DML:不正确的日期值 (MySQL)(SQL DML: Incorrect date value (MySQL))

问题 我在我的数据库中创建了一个表: CREATE TABLE official_receipt( student_no INT UNSIGNED, academic_year CHAR(8), trimester ENUM('1', '2', '3'), or_no MEDIUMINT UNSIGNED, issue_date DATE NOT NULL, received_from VARCHAR(255) NOT NULL, amount_of DECIMAL(8,2) NOT NULL, issued_by VARCHAR(255), doc_type ENUM('FULL', 'DOWN', 'INST') NOT NULL, form_of_payment ENUM('CASH', 'INST') NOT NULL, PRIMARY KEY (student_no, academic_year, trimester, or_no) ); 我插入了一些值: INSERT INTO official_receipt(student_no , academic_year, trimester, or_no, issue_date, received_from, amount_of, issued_by, doc_type, form_of_payment) VALUES

2021-07-13 01:53:02    分类:技术分享    mysql   insert-into   date-format   dml

是否允许在流水线 PL/SQL 表函数中使用 SELECT?(Is using a SELECT inside a pipelined PL/SQL table function allowed?)

问题 流水线函数的文档说,在 SQL 语句(通常是SELECT )中使用 DML 时不允许使用 DML,并且在大多数示例中,流水线函数用于数据生成或转换(接受 custor 作为参数),但不发出任何 DML 语句。 现在,从技术上讲,可以使用 SELECTs 而没有来自 Oracle 的任何错误(不会发生 ORA 14551)。 但是,我遇到了可重复的选择奇怪行为; 即使没有使用PRAGMA AUTONOMOUS_TRANSACTION , SELECT检索的行似乎并不总是考虑当前的本地事务,这对我来说就像一个错误。 更令人不安的是,当使用分布式事务(例如通过 ORAMTS 而不是本地事务)时,会使用事务。 编辑:事实证明,奇怪的效果似乎与查询中的一些 WITH 语句有关,这些语句有时有效,有时无效(取决于 Oracle 优化器的当前心情,至少在 10g 中)。 在某些情况下,我得到一个 ORA-32036,然后它又不会发生,根本不更改代码。 现在看起来好像有时会因 ORA-32036 失败的查询也无法使用正确的事务,并且它可能与流水线功能无关。 所以我的具体问题是: 是否有任何(最好是官方的)声明是否允许流水线表函数中的SELECT以及它们的事务上下文是什么? 是否有另一种方法可以模块化可在 SQL 语句中使用的常用查询(就像表函数可以使用TABLE() )?

2021-07-11 16:30:40    分类:技术分享    sql   oracle   plsql   dml   pipelined-function

Is using a SELECT inside a pipelined PL/SQL table function allowed?

The docs for pipelined functions say that DML is not allowed when they are used in a SQL statement (typically a SELECT), and in most examples the pipelined functions are used for data generation or transformation (accepting a custor as parameter), but not issuing any DML statements. Now, technically, it is possible to use SELECTs without any error from Oracle (ORA 14551 will not occur). However, I have experiences reproducible strange behavior of the select; even though PRAGMA AUTONOMOUS_TRANSACTION is not being used, the rows retrieved by the SELECT seem not always taking the current local

2021-06-26 07:53:13    分类:问答    sql   oracle   plsql   dml   pipelined-function

在 T-SQL 中结合存储过程和查询(Combine stored procedure and query in T-SQL)

问题 如何在常规 SQL 查询中结合执行存储过程和使用其结果或参数? 例如,我想做如下事情: -- passing result of SELECT to SP SELECT a, b FROM t EXEC my_sp a, b -- passing result of SP to INSERT INSERT INTO t EXEC my_sp a, b 等等。 回答1 不,您需要使用临时表 create table #results (col1 int, col2 varchar(5) ...) INSERT INTO #results EXEC YourProcedure @parma... 然后你可以加入它 SELECT * FROM YourTable y JOIN #results r ON ... .... 如果您不知道过程中的列和数据类型,您可以使用这个优秀的答案:将存储过程的结果插入临时表 简而言之,它使用OPENROWSET将存储过程执行到动态创建的 #temp 表中,而无需命名和知道所有列的类型。 回答2 如果您的 SP 可以重写为内联表值 UDF,则这些通常性能非常好并且等效于参数化视图。 ITVF 可用于任何需要使用表或视图的地方。 如果您的 SP 不能作为内联 TVF(需要局部变量操作)工作,则它可能作为多语句 TVF(包含 BEGIN/END)工作

2021-06-12 11:01:08    分类:技术分享    sql   sql-server   tsql   stored-procedures   dml