Questions tagged «stored-procedures»

子例程可用于访问关系数据库系统的应用程序。

7
在SQL Server中,“ SET ANSI_NULLS ON”是什么意思?
定义说: 当SET ANSI_NULLS为ON时,即使column_name中有空值,使用WHERE column_name = NULL的SELECT语句也将返回零行。即使column_name中包含非空值,使用WHERE column_name <> NULL的SELECT语句也将返回零行。 这是否意味着此查询中将不包含任何空值? SELECT Region FROM employees WHERE Region = @region 还是ANSI_NULL只关心类似这样的查询(其中WHERE包括特定单词NULL)? SELECT Region FROM employees WHERE Region = NULL

12
函数与存储过程
假设我必须实现一段T-SQL代码,该代码必须返回一个表作为结果。我可以实现一个表值函数或一个返回一组行的存储过程。我应该使用什么? 简而言之,我想知道的是: 函数和存储过程之间的主要区别是什么?使用其中一种时,我必须考虑哪些因素?

2
用户定义的表类型是否拒绝EXECUTE权限?
我对SQL Server 2008中的用户定义表类型有疑问。 为了满足ASP.NET应用程序之一的需要,我们在SQL Server 2008上定义了自己的表类型,以将它们用作存储过程中的参数(在ASP.NET应用程序中执行sql命令时,我们将DataTable对象作为存储过程的参数传递请看这里的例子) 问题是,当我们从ASP.NET运行Sql命令(执行存储过程)时,出现错误: 对对象'ourTableType',数据库'ourDatabase',模式'ourSchema'的EXECUTE权限被拒绝。 为什么呢?为什么我们需要对用户定义的表类型设置权限?为什么仅在使用权限的存储过程上设置权限还不够?如果我们要设置它,不管是什么,为什么没有EXECUTE在属性窗口的任何许可类型集(我只看到Control,References,Take Ownership,View Definition)? 我还不明白的是,Control在属性窗口中将权限设置为可以解决问题,并且存储过程可以正常运行。

7
找不到存储过程'dbo.aspnet_CheckSchemaVersion'
我正在使用WinHost.com托管我的网站。SQL数据库/成员资格系统可以在我的本地计算机上完美运行,但是当上载到服务器时,它将无法正常工作。我正确地遵循了所有步骤。我已经联系了我的服务支持部门,但是已经超过2周了,没有回复。 当我尝试在我的站点的会员页面上登录或注册新用户时,我一直收到此错误。 Server Error in '/' Application. -------------------------------------------------------------------------------- Could not find stored procedure 'dbo.aspnet_CheckSchemaVersion'. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. Exception Details: System.Data.SqlClient.SqlException: Could not …

4
如何在MS SQL Server存储过程中声明数组?
我需要用光标声明与每个月的年份相对应的12个十进制变量,然后对这些变量的值求和,然后再更新一些销售信息。 我不知道sql server是否具有此语法 Declare MonthsSale(1 to 12) as decimal(18,2) 此代码可以正常工作。! CREATE PROCEDURE [dbo].[proc_test] AS BEGIN --SET NOCOUNT ON; DECLARE @monthsales TABLE ( monthnr int, amount decimal(18,2) ) -- PUT YOUR OWN CODE HERE -- THIS IS TEST CODE -- 1 REPRESENTS JANUARY, ... INSERT @monthsales (monthnr, amount) VALUES (1, 100) …

3
仅将一个IDENTITY列插入表中的行
我有一个表Administrator,只有一个列adminId,这是主键。由于业务规则,必须采用这种方式。 我想一劳永逸地理解如何编写存储过程,以便在这样的表中插入值。我正在使用SQL Server和T-SQL,并尝试使用SCOPE_IDENTITY(),但由于该表的INSERT_IDENTITY为false或off,因此无法正常工作。 我真的不希望仅为了能够插入新行而插入虚拟值。谢谢!

14
在SQL Developer中运行存储过程?
我正在尝试运行具有多个输入输出参数的存储过程。只能通过导航“其他用户” |“连接”面板来查看该过程。| 套餐| | 如果我单击右键,则菜单项为“订购成员依据...”和“创建单元测试”(显示为灰色)。当用户访问该过程时,似乎无法“运行”该过程。 我一直在尝试找到一个示例,该示例说明如何创建匿名块,以便可以将过程作为SQL文件运行,但没有找到任何有效的方法。 有谁知道如何从SQL Developer执行此过程?我正在使用2.1.1.64版。 提前致谢! 编辑1: 我要调用的过程具有以下签名: user.package.procedure( p_1 IN NUMBER, p_2 IN NUMBER, p_3 OUT VARCHAR2, p_4 OUT VARCHAR2, p_5 OUT VARCHAR2, p_6 OUT NUMBER) 如果我这样写我的匿名块: DECLARE out1 VARCHAR2(100); out2 VARCHAR2(100); out3 VARCHAR2(100); out4 NUMBER(100); BEGIN EXECUTE user.package.procedure (33,89, :out1, :out2, :out3, :out4); END; 我得到错误: …

9
用返回值调用存储过程
Наэтотвопросестьответына堆栈溢出нарусском:Какпривызовехранимойпроцедурыполучитьзначениепереданное в RETURN 我正在尝试从C#Windows应用程序调用存储过程。该存储过程在SQL Server 2008的本地实例上运行。我可以调用该存储过程,但无法从该存储过程中检索回该值。该存储过程应该返回序列中的下一个数字。我已经在网上进行了研究,并且我所看到的所有站点都指出该解决方案有效。 存储过程代码: ALTER procedure [dbo].[usp_GetNewSeqVal] @SeqName nvarchar(255) as begin declare @NewSeqVal int set NOCOUNT ON update AllSequences set @NewSeqVal = CurrVal = CurrVal+Incr where SeqName = @SeqName if @@rowcount = 0 begin print 'Sequence does not exist' return end return @NewSeqVal end 调用存储过程的代码: SqlConnection conn …


3
Dapper.NET和具有多个结果集的存储过程
有什么方法可以将Dapper.NET与返回多个结果集的存储过程一起使用? 就我而言,第一个结果集是单行单列;如果是,0则调用成功,第二个结果集将包含实际的数据行/列。(如果它不为零,则会发生错误,并且不会提供第二个结果集) 有机会使用Dapper.NET处理吗?到目前为止,我只回过单曲0,但仅此而已。 更新:好的,只要结果集没有。2是单个实体: Dapper.SqlMapper.GridReader reader = _conn.QueryMultiple("sprocname", dynParams, commandType: CommandType.StoredProcedure); int status = reader.Read<int>().FirstOrDefault(); MyEntityType resultObj = reader.Read<MyEntityType>().FirstOrDefault(); 现在,我还有另一个要求。 精致小巧的多映射(分裂从SQL Server返回到两个独立的实体单行)对于第二个结果集似乎不支持作为尚未(至少似乎没有成为过载.Read<T>,可以处理多重映射)。 如何将该行分为两个实体?

8
必须声明标量变量
@RowFrom int @RowTo int 都是存储过程的全局输入参数,并且由于我正在用T-SQL编译存储过程内部的SQL查询,然后Exec(@sqlstatement)在存储过程的末尾使用来显示结果,因此当我尝试使用时会出现此错误在@RowFrom或@RowTo内@sqlstatement被执行的变量..它工作正常,否则..请帮助。 "Must declare the scalar variable "@RowFrom"." 另外,我尝试在@sqlstatement变量中包含以下内容: 'Declare @Rt int' 'SET @Rt = ' + @RowTo 但@RowTo仍然不会将其值传递给它@Rt 并生成错误。

6
在SQL Server中转义字符串,以便可以在LIKE表达式中安全使用
如何在SQL Server的存储过程中转义字符串,以便可以在LIKE表达式中安全使用。 假设我有一个NVARCHAR像这样的变量: declare @myString NVARCHAR(100); 我想在LIKE表达式中使用它: ... WHERE ... LIKE '%' + @myString + '%'; 如何转义字符串(更具体地说,是对LIKE模式匹配有意义的字符,例如%?在T-SQL中或),以便可以安全地以这种方式使用? 例如,给定: @myString = 'aa%bb' 我想要: WHERE ... LIKE '%' + @somehowEscapedMyString + '%' 匹配'aa%bb','caa%bbc'但没有'aaxbb'或'caaxbb'。


5
存储过程中可以有一个可选的OUTPUT参数吗?
我有一个具有一堆输入和输出参数的存储过程,因为它正在向多个表中插入值。在某些情况下,存储的proc仅插入到一个表中(取决于输入参数)。这是一个模拟的场景来说明。 表/数据对象: 人 Id Name Address 名称 Id FirstName LastName 地址 Id Country City 说我有一个插入人的存储过程。如果该地址不存在,则不会将其添加到Address数据库的表中。 因此,当我生成代码以调用存储过程时,我不想添加任何Address参数。对于INPUT参数,这是可以的,因为SQL Server允许我提供默认值。但是对于OUTPUT参数我该在存储过程中做什么使其使其可选,所以我不会收到错误... 过程或函数“ Person_InsertPerson”需要未提供的参数“ @AddressId”。

4
Postgres FOR LOOP
我试图从一张桌子中获得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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.