javascript

git

java

python

git-remote

c++

github

django

c#

reactjs

c++-faq

git-checkout

generator

coroutine

spring-mvc

reflection

javascript-objects

html5

analytics

node.js

SQL Server如何处理存储过程中有关事务的语句?

说我有一个存储过程,该过程由几个单独的SELECT,INSERT,UPDATE和DELETE语句组成。 没有明确的BEGIN TRANS / COMMIT TRANS / ROLLBACK TRANS逻辑。

SQL Server将如何以事务方式处理此存储过程? 每个语句都会隐式连接吗? 还是存储过程会有一笔交易?

另外,如何使用T-SQL和/或SQL Server Management Studio独自发现这一点?

谢谢!

trans by 2020-08-12T03:38:24Z

如何在SQL Server中声明变量并在同一存储过程中使用它

我试图从一个表中的BrandID获取值并将其添加到另一表中。 但是我无法使它工作。 有人知道该怎么做吗?

CREATE PROCEDURE AddBrand
AS

DECLARE 
@BrandName nvarchar(50),
@CategoryID int,
@BrandID int

SELECT @BrandID = BrandID FROM tblBrand 
WHERE BrandName = @BrandName

INSERT INTO tblBrandinCategory (CategoryID, BrandID) 
       VALUES (@CategoryID, @BrandID) 

RETURN
trans by 2020-08-11T17:40:51Z

sql-如何在存储过程中选择TOP @Param?

我正在尝试在proc中执行以下操作,但是语法错误:

SELECT TOP @NumberOfResultsToReturn *

我在这里做错了什么? 谢谢。

trans by 2020-08-07T05:47:42Z

sql-如何确定工作状态?

我有一个计划工作的存储过程。 该作业需要大量时间才能完成(大约30至40分钟)。 我需要了解这份工作的状态。以下详细信息对我有帮助

1)如何查看已计划在将来某个时间开始但尚未开始的所有作业的列表

2)如何查看正在运行的作业列表以及运行时间

3)如何查看作业是否已成功完成或由于任何错误而在两者之间停止。

trans by 2020-08-05T23:34:43Z

SQL Server-如何锁定表,直到存储过程完成

我想做这个:

create procedure A as
  lock table a
  -- do some stuff unrelated to a to prepare to update a
  -- update a
  unlock table a
  return table b

这样有可能吗?

最终,我希望我的SQL Server报告服务报告调用过程A,然后仅在过程完成后显示表a。 (我无法将过程A更改为返回表a)。

trans by 2020-08-03T18:47:05Z

SQL Server-使用事务进行选择语句?

我不经常使用存储过程,并且想知道将选择查询包装在事务中是否有意义。

我的过程有三个简单的选择查询,其中两个使用第一个的返回值。

trans by 2020-08-01T22:08:00Z

SQL Server-存储过程-返回标识作为输出参数或s

将记录插入带有标识列的表中时,可以使用SCOPE_IDENTITY()获取该值。 在存储过程的上下文中,这是返回标识值的推荐方法:

  1. 作为输出参数SELECT SCOPE_IDENTITY()
  2. 作为标量SELECT SCOPE_IDENTITY()
  3. 其他方式?

每个都有利弊吗?

trans by 2020-08-01T15:58:18Z

sql-存储过程和用户定义函数之间的区别

谁能解释存储过程和用户定义的函数之间的确切区别是什么,在每种情况下都有用吗?

trans by 2020-07-30T00:03:05Z

sql-UNION多个存储过程的结果

我有一个存储过程,每次调用时都需要调用几次不同的参数。 我想将结果收集为一个数据集。 像这样可能吗...

exec MyStoredProcedure 1
UNION
exec MyStoredProcedure 2
UNION
exec MyStoredProcedure 3

我尝试使用上面的语法,但出现错误...

Incorrect syntax near the keyword 'UNION'

我正在处理的存储过程非常复杂,对我来说有点像“黑匣子”,因此我无法进入存储过程的定义并进行任何更改。 关于如何将结果汇总在一起的任何建议?

我正在使用SQL Server 2008 R2。 谢谢你的帮助。

trans by 2020-07-29T12:39:21Z

sql-什么时候应该使用存储过程?

什么时候应该使用存储过程,而不是直接在应用程序中直接编写逻辑? 我想获得存储过程的好处,但是我也不想让我的应用程序逻辑散布在数据库和应用程序上。

您是否可以参考任何经验法则?

trans by 2020-07-10T23:23:39Z

实体框架-EF 6数据库优先:如何更新存储过程?

我们正在使用Entity Framework 6.0.0,并且首先使用数据库(像这样)从表和存储过程生成代码。 这似乎很好用,除了在更新或刷新模型时不反映存储过程中的更改。 向表中添加列将得到反映,但不会向存储过程中添加字段。

有趣的是,如果我转到Visual Studio 2013,右键单击存储过程,选择Add Function Import,然后单击按钮Get Column Information,我们可以看到正确的列。 这意味着该模型知道列,但无法更新已生成的代码。

有一种解决方法,那就是在更新模型之前删除生成的存储过程。 只要您没有对存储过程进行任何编辑,此方法就起作用。 有谁知道避免这种解决方法的方法?

我将Visual Studio 2013与2013年12月上旬的所有最新更新一起使用。

提前致谢!

更新1:Andersr的回答在一种情况下有所帮助,其中存储过程使用了一个临时表,因此我给了他+1,但仍然不能解决更新简单存储过程的主要问题。

更新2:shimron在下面的评论链接到有关EF 3.5中相同问题的问题。 对于EF 6.0似乎仍然如此。 阅读它是一种替代方法,但是到目前为止,我的结论是,最简单的方法是在更新模型之前删除生成的存储过程。 如果您想做一些花哨的事情,请使用局部类。

trans by 2020-07-10T15:09:52Z

postgresql-Postgres循环

我试图从一张桌子中获得25个15,000个ID的随机样本。 我没有每次都手动按下run,而是试图做一个循环。 我完全了解的不是Postgres的最佳用法,但这是我拥有的工具。 这是我到目前为止的内容:

for i in 1..25 LOOP
   insert into playtime.meta_random_sample
   select i, ID
   from   tbl
   order  by random() limit 15000
end loop
trans by 2020-07-10T03:09:36Z

c#-数据为空。 无法在Null值上调用此方法或属性

我正在开发一种应用程序,可以从数据库中获取电影信息以及添加,更新和删除电影。 在数据库中,我有三个表(电影,流派和电影流派<-存储电影及其流派/秒)。 除了一件事,一切都可以正常工作,那就是电影没有任何类型的流派(应该有可能)。

在下面的方法中发生问题,并引发以下异常:数据为空。 不能在Null值上调用此方法或属性。

原因(当然)是因为电影没有任何体裁,所以sproc返回null,但是我只是不知道如何防止抛出此异常。 就像我说的那样,应该可以在不存储任何流派信息的情况下存储电影。

提前致谢!

方法:

public List<MovieGenre> GetMovieGenrebyMovieID(int movieID) {

    using (SqlConnection conn = CreateConnection()) {
        try {

            SqlCommand cmd = new SqlCommand("dbo.usp_GetMovieGenreByMovieID", conn);
            cmd.CommandType = CommandType.StoredProcedure;

            cmd.Parameters.AddWithValue("@MovieID", movieID);

            List<MovieGenre> movieGenre = new List<MovieGenre>(10);

            conn.Open();

            using (SqlDataReader reader = cmd.ExecuteReader()) {

                int movieGenreIDIndex = reader.GetOrdinal("MovieGenreID");
                int movieIDIndex = reader.GetOrdinal("MovieID");
                int genreIDIndex = reader.GetOrdinal("GenreID");

                while (reader.Read()) {

                    movieGenre.Add(new MovieGenre {
                        MovieID = reader.GetInt32(movieIDIndex),
                        MovieGenreID = reader.GetInt32(movieGenreIDIndex),
                        GenreID = reader.GetInt32(genreIDIndex)
                    });
                }
            }

            movieGenre.TrimExcess();

            return movieGenre;
        }
        catch {
            throw new ApplicationException();
        }
    }
}

程序:

ALTER PROCEDURE usp_GetMovieGenreByMovieID
@MovieID int
AS
BEGIN
    BEGIN TRY
        SELECT m.MovieID, g.GenreID, mg.MovieGenreID, g.Genre
        FROM Movie AS m
        LEFT JOIN MovieGenre AS mg
            ON m.MovieId = mg.MovieID
        LEFT JOIN Genre AS g
            ON mg.GenreID = g.GenreID
        WHERE m.MovieID = @MovieID
    END TRY
    BEGIN CATCH
        RAISERROR ('Error while trying to receive genre(s).',16,1)
    END CATCH
END
trans by 2020-07-09T04:42:45Z

sql-哪个更好:临时查询或存储过程?

假设由于某种原因无法使用LINQ,将查询放在存储过程中是更好的做法,还是对数据库执行临时查询(例如,为论证而使用SQL Server)是否一样好?

trans by 2020-07-08T08:05:54Z

sql-“此SqlTransaction已完成;它不再可用。” ...配置错误?

我已经从事了大约一天半的时间,并在网络上搜索了许多博客和帮助文章。 我在SO上发现了几个与此错误有关的问题,但我认为它们并没有完全适用于我的情况(或者,不幸的是,在某些情况下,我对它们的理解不够深刻,无法实现:P)。 我不确定我能否描述得足够好以寻求帮助...但是这里是:

我们有一个.NET应用程序来跟踪我们的资源。 有一个导出功能可以将资源复制到时间跟踪系统和计费系统; 这将访问一个存储过程,该存储过程链接到时间和计费数据库。

我最近将计费系统数据库移到了新服务器上(原始服务器:Server 2003 SP2,SQL 2005;新服务器:Server 2008 R2,SQL 2008 R2)。 我有一个指向2008数据库的链接服务器设置。 我更新了存储过程,使其指向2008服务器,然后出现有关MSDTC和RPC的错误([http://www.safnet.com/writing/tech/archives/2007/06/server_myserver.html)。] 我在链接服务器上启用了“ rpc / rpc输出”,并将MSDTC设置为允许网络访问(类似这样的内容:[http://www.sqlwebpedia.com/content/msdtc-troubleshooting)。]

现在,当我尝试运行导出功能时,我得到了上面的内容:“此SqlTransaction已完成;它不再可用。” 在我看来,奇怪的是,当我刚刚运行存储过程(来自SSMS)时,它说成功完成了。

谁看过这个吗? 我是否错过了配置中的某些内容? 我不断浏览相同的页面,唯一发现的是更改了MSDTC之后,我没有重新启动(在此处提到:[http://social.msdn.microsoft.com/forums/en-US/ adodotnetdataproviders / thread / 7172223f-acbe-4472-8cdf-feec80fd2e64 /)。]

我可以发布部分或全部存储过程,如果有帮助的话……请告诉我。

trans by 2020-07-04T21:05:07Z

数据库-如何在MySQL中计划存储过程

我有这个存储过程。 例如,如何间隔5秒运行一次? 像用于消除时间戳超过一天的数据的例程一样?

DROP PROCEDURE IF EXISTS `delete_rows_links` 
GO

CREATE PROCEDURE delete_rows_links
BEGIN 

    DELETE activation_link
    FROM activation_link_password_reset
    WHERE  TIMESTAMPDIFF(DAY, `time`, NOW()) < 1 ; 

END 

GO
trans by 2020-07-04T02:11:27Z

sql-如何选择一个空结果集?

我在MySQL中使用带有CASE语句的存储过程。

在CASE的ELSE子句中(等效于默认值:),我想选择并返回一个空结果集,从而避免通过不处理ELSE情况而引发SQL错误,而是像常规查询一样返回一个空结果集 不会返回任何行。

到目前为止,我已经设法使用类似的方法做到这一点:
Select NULL

但是我必须命名一个现有的表,例如本例中的“用户”。它可以工作,但是我更喜欢一种更优雅的方法,即使最终使用的表名被重命名或删除,它也不会中断。

我已经尝试了Select NULL,但是它不起作用。

使用Select NULL不会返回空集,而是返回一行名为NULL且值为NULL的行。

trans by 2020-07-01T08:36:44Z

sql-获取BIT列的MAX值

我在联接表中有一个带有“内部联接”的SELECT请求,是一列具有位类型的列。

如果联接表中的值最多为1,我想选择1。如果不是,则值为0。

所以,如果我有:

PERSID | NAME
1      |  Toto
2      |  Titi
3      |  Tata

还有第二张桌子

PERSID | BOOL
1      |  0
1      |  0
2      |  0
2      |  1

我想得到结果

Toto -> 0
Titi -> 1
Tata -> 0

我尝试这样:

SELECT 
     sur.*
    ,MAX(bo.BOOL)    

    FROM SURNAME sur              
    INNER JOIN BOOL bo
    ON bo.IDPERS = sur.IDPERS

但是MAX在BIT列上不可用。那么我该怎么做?

谢谢,

trans by 2020-06-27T16:05:52Z

函数与过程

谁能解释Oracle函数和过程之间的主要区别是什么? 如果我可以使用函数进行所有操作,为什么必须使用过程?

  1. 如果我不能在sql语句中调用过程,那么好了,我将编写一个函数来完成相同的工作。
  2. 过程不返回值,好吧,在执行任何dml操作后,我将仅返回sql%rowcount或1(成功),0(异常)
  3. 过程和函数都可以通过OUT / IN OUT参数将变量传递给调用环境

我听说主要的区别在于性能,“过程比功能更快”。 但没有任何细节。

提前致谢。

trans by 2020-06-21T19:41:27Z

t sql-在存储过程中将游标与动态SQL一起使用

我有一个在存储过程中创建的动态SQL语句。 我需要使用游标遍历结果。 我很难弄清楚正确的语法。 这就是我在做什么。

SELECT @SQLStatement = 'SELECT userId FROM users'

DECLARE @UserId

DECLARE users_cursor CURSOR FOR
EXECUTE @SQLStatment --Fails here. Doesn't like this

OPEN users_cursor
FETCH NEXT FROM users_cursor
INTO @UserId

WHILE @@FETCH_STATUS = 0
BEGIN

EXEC asp_DoSomethingStoredProc @UserId

END
CLOSE users_cursor
DEALLOCATE users_cursor

什么是正确的方法?

trans by 2020-06-20T09:40:05Z

1 2 3 4 5 6 下一页 共6页