SQL Server中的问号
我有以下Oracle SQL语句:SQL Server中的问号,sql,sql-server,oracle,migration,Sql,Sql Server,Oracle,Migration,我有以下Oracle SQL语句: INSERT INTO document_status (result_row_id, timestamp, username, status_type, status, comment_text, document, document_file, assigned_to) VALUES (?, SYSTIMESTAMP, ?, ?, ?, ?, ?, ?, ?) 我想将此语句转换为SQL Server语句,但我不知道值(?,SYSTIMESTAMP
INSERT INTO document_status (result_row_id, timestamp, username,
status_type, status, comment_text, document, document_file, assigned_to)
VALUES (?, SYSTIMESTAMP, ?, ?, ?, ?, ?, ?, ?)
我想将此语句转换为SQL Server语句,但我不知道值(?,SYSTIMESTAMP,,,,,,,,,,?)中问号的等效参数。
我能做什么?您可以在sql server中使用变量:
DECLARE @result_row_id INT
, @username VARCHAR(100)
, @status_type VARCHAR(100)
, @status VARCHAR(100)
, @comment_text VARCHAR(100)
, @document VARCHAR(100)
, @document_file VARCHAR(100)
, @assigned_to VARCHAR(100)
INSERT INTO document_status
(
result_row_id
, timestamp
, username
, status_type
, status
, comment_text
, document
, document_file
, assigned_to
)
VALUES
(
@result_row_id
, GETDATE()
, @username
, @status_type
, @status
, @comment_text
, @document
, @document_file
, @assigned_to
)
实际上,您所看到的几乎肯定是一个准备好的语句,可能是从Java或C#运行的。您看到的
?
是实际值的占位符,稍后将绑定到语句。因此,这里您可能需要更改的唯一内容是文本SYSTIMESTAMP
。SQL Server为此使用SYSDATETIMEOFFSET()
:
INSERT INTO document_status (result_row_id, timestamp, username, status_type, status,
comment_text, document, document_file, assigned_to)
VALUES
(?, SYSDATETIMEOFFSET(), ?, ?, ?, ?, ?, ?, ?);
您是否看到这段代码直接针对Oracle运行,或者这段代码出现在某些应用程序编程语言中,如Java或C#?是的,它出现在Java中,我认为这将是SQL语句,并想知道为什么它们没有在SQL Server Management Studio中用作SQL查询,但现在它已修复,谢谢