声明 SQL Server 不工作

本文关键字:工作 Server SQL 声明 | 更新日期: 2023-09-27 18:36:33

我在C#中使用剃刀,我需要在SQL中声明一个变量,但它不起作用。

insert_data = db.Query("DECLARE @myid INT");

我收到以下错误

解析查询时出错。[ 令牌行号 = 1,令牌行偏移量 = 1,标记错误 = 声明 ]

编辑:

我正在尝试将数据放入一个表中,然后获取其唯一 ID 并将其插入另一个表中。

insert_data = db.Query("INSERT INTO sorted (sorted_words) SELECT '" + sorted_word + "' WHERE NOT EXISTS (SELECT sorted_words FROM sorted WHERE sorted_words = '" + sorted_word + "')");
insert_data = db.Query("DECLARE @myid BIGINT");
insert_data = db.Query("SET @myid = scope_identity()");
insert_data = db.Query("INSERT INTO words (words, sorted_id) SELECT '" + word + "', @myid WHERE NOT EXISTS (SELECT words FROM words WHERE words = '" + word + "')");

声明 SQL Server 不工作

尝试使用

ExecuteStoreCommand 而不是使用 Query

参考:实体框架:设置 MySQL 自定义环境变量

SQL Compact 参数的声明方式

与 SQL Server 的声明方式不同。使用数据库帮助程序时,应将参数命名为 @0@1@2 等,每次递增 1。此外,Database.Query 方法用于选择多行数据。应将 Execute 用于插入,GetLastInsertId用于获取最近一行的标识值:

db.Execute("INSERT INTO sorted (sorted_words) SELECT @0 WHERE NOT EXISTS (SELECT sorted_words FROM sorted WHERE sorted_words = @0)", sorted_word);
var id = (int)db.GetLastInsertId();
db.Execute("INSERT INTO words (words, sorted_id) SELECT @0, @1 WHERE NOT EXISTS (SELECT words FROM words WHERE words = @0)", word, id);

在此处阅读有关在 Razor 网页中使用数据的更多信息:http://www.asp.net/web-pages/tutorials/data

我建议编写一个包含所有语句的存储过程,并从您的代码中执行此存储过程。这将更容易管理。