Tag: 存储过程

Excel 2010和SQL Server存储过程

我需要一个macros,对于列中的每个单元格,执行一个SQL Server存储过程,该过程为不同列(但在同一行中)的不同单元格获取参数。 即填充列B与存储过程的结果,从列A获取参数.. 例子: B2是使用A2值作为input的存储过程的结果 B3是使用A3值作为input的存储过程的结果 B4是使用A4值作为input的存储过程的结果 B5是使用A5值作为input的存储过程的结果 有没有办法做到这一点,没有VBA?

使用Excel VBA中的游标调用MySQL存储过程 – >命令不同步

我在使用游标的MySQL中编写了一个存储过程。 从mysql和mysql工作台调用spoc时,一切正常。 但是,一旦我尝试从Excel VBA中调用spoc,我总是会得到一个错误:“命令不同步;现在不能运行此命令”。 “OPEN cursorName”行 导致错误消息。 奇怪的是:只要我的spoc不使用游标,或者它使用游标,但不会使用“SELECT”语句,一切都可以在Excel中使用。 即使多个SELECT语句也可以工作,但是当然不能用游标。 连接设置肯定是好的。 除此之外,当我使用mysql-proxy的时候发现,logging的输出有点奇怪,因为没有调用存储过程(但是我得到的结果没有使用游标),而是其他一些调用(我猜ODBC驱动程序本身?)。 我期待着任何答案! 谢谢大家。 农庄 一个最小的例子: MySQL的 DELIMITER // DROP PROCEDURE IF EXISTS buildTree // CREATE PROCEDURE buildTree(IN rootId INT) BEGIN DECLARE bla CURSOR FOR ( SELECT 1 ); OPEN bla; SELECT 1; END // Excel的VBA(不完整,但可运行。closures光标等缺less这里) Public Function QueryMySQL() Dim conn As ADODB.Connection Dim rst As […]

MYSQL语句在进入框架时工作,在保存mysql时不能得到框架与函数一起工作

历史等:项目是时间表入口,目前在excel中工作,现在使用Excel 2010作为前端进行快速应用程序开发。 框架是SAVETODB我不是一个数据库专家,我已经知道如何编写selectstmt多年,但首次devise完整的数据库 目标:使用mysql存储过程将excel中input的数据库表更改保存到mysql中 (当存储过程代码保存在savetodb中时,它将起作用) 不知道有多less帮助我会在这里得到SAVETODB(无法find产品特定的forms),我从来没有使用过,但如果它的作品,那么它是我的需求辉煌。 所以在SAVETODB中,你可以input你的更新/插入/删除查询,或者你可以把它指向你的数据库(MySQL)中保存的过程。 当我input我的mysql语句到savetodb 我可以保存到数据库从Excel中 ,但是当保存为程序在mysql中,并从savetodb调用我无法保存到数据库从Excel中 。 我说这是行不通的原因是加载第二个表时savetdb“保存”button是灰色的 从获得两个字段开始,以便正确地获取该语句, WORKS(即savetodb允许保存更改)savetodb中的所有代码 – 这些是savetodb设置(链接图像中为绿色) 不起作用,即使用存储过程这些是savetodb设置(粉红色链接的图像) 编辑0215 更新下面的graphics,如果引用插入/更新/删除过程,savetdb也可以接受基表。 这需要以表格开头的数据库名称,但是即使以数据库名称作为前缀,仍然不允许保存。 也许我认为程序错了? 来自框架文件“savetodb_deb.query_list”的数据 [ https://drive.google.com/file/d/0B20N5606_8JfTk9DZjVTVTFDaEE/view?usp=sharing] 以下三个工作和更新数据/按预期从Navicat运行时执行 插入程序的MYSQL代码 – 这三个是我正在尝试使用第二组savetodb设置 CREATE DEFINER = `root`@`localhost` PROCEDURE `NewProc`(IN `id` int,IN `thenumber` char(25),IN `thedate` datetime) BEGIN INSERT INTO time1 set Date = thedate, Reference = thenumber; END; MYSQL代码更新程序 CREATE DEFINER […]

VBA Excel ADO sp_addextendedproperty存储过程执行

我试图在Excel中创build一个用户窗体,允许用户添加新的列和描述到现有的SQL服务器表。 我在VBA中使用ADO库。 要将描述添加到创build的列,我需要运行系统存储过程sp_addextendedproperty。 我无法将parameter passing给它,我总是收到错误错误-2147217900:为过程“sp_addextendedproperty”指定了无效的参数或选项。 Private Sub InsertField_bt_Click() Set con = New ADODB.Connection con.Provider = "sqloledb" sConnectionString = "Server=rumossql12;Database=PharmNet;UID=(login here);Pwd=(password here)" con.Open sConnectionString Set cmd = New ADODB.Command cmd.CommandType = adCmdStoredProc cmd.ActiveConnection = con cmd.CommandText = "sp_addextendedproperty" Dim name As ADODB.Parameter Dim value As ADODB.Parameter Dim level0type As ADODB.Parameter Dim level0name As ADODB.Parameter Dim level1type […]

使用多个输出在VBA中执行SQL Server存储过程

我在SQL Server中有一个存储过程,我试图通过一些VBA代码从Excel执行。 但是,存储过程有两个输出(见下文)。 我的logging集只拉第一个表(添加0错误消息…),而我想拉第二个表。 图片在这里: http : //i.stack.imgur.com/LxyLi.png 这里是我的代码,从我在这里find的其他来源编译: Sub RefreshBarcodes() Dim Database As String Dim con As ADODB.Connection Dim strconn As String Dim SQLServer As String Dim Session As String Dim strSQLCommandOne As String Application.ScreenUpdating = False Worksheets("Master").Activate Database = Worksheets("Master").Cells(5, "H").Value SQLServer = Worksheets("Master").Cells(4, "H").Value Session = Worksheets("Master").Cells(6, "H").Value 'Connect to Database Set […]

如何从Excal调用Oracle打包函数

我正在尝试在Oracle 11g数据库中执行一个包和函数。 我有下面的代码,但是,我得到第一个.Execute命令上的错误。 在VBA中的本地窗口给了我下面的错误: Description : "Unspecified error" : String Number : -2147467259 : Long Source : "OraOLEDB" : String 哦,我已经引用了Microsoft ActiveX Data Object 6.1 Library。 我已经尝试了各种更改的代码,但他们都返回相同的错误信息。 Sub QueryGLComb() Dim OraCon As ADODB.Connection Dim recset As New ADODB.Recordset Dim cmd As New ADODB.Command Dim objErr As ADODB.Error Dim lngRow As Long On Error GoTo err_test […]

显示自定义错误消息,如果数据types不匹配时,将excel文件读入数据库(在C#程序中)

我是新来的.NET,希望得到我的下面的场景一些build议: 情景:我有一个外部Excel文件,应该读取并使用C#加载到数据库中。 所以,为此我创build了两个表格: 临时表(在加载到最终表之前,从Excel文件中读取数据的临时表)。 最终表(包含validation的数据)。 在临时表中,我需要编写一个程序来validation数据types,并通过显示错误消息来提示用户(例如:excel列只包含数值,如果任何单元格包含该特定列中的文本/string,C#程序应显示消息(“文本不允许,请input数值”)。 为了达到上述目的,我想编写一个将临时表存储错误信息的存储过程,C#程序执行存储过程来读取临时表中的错误信息。 我通过将非数字/文本(“ABC”)值赋予数字列来尝试上述过程。 但是我没有收到一个错误信息,因为它是空的,而不是显示错误信息 OLEDB连接string: string STR_OLEDBCONNECTION = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source='" + PATH + "';Extended Properties='Excel 12.0 Xml;HDR=Yes';IMEX = 1"; 下面是SQL存储过程将错误消息读入临时表。 USE [EXCEL_DATABASE] GO CREATE PROCEDURE [dbo].[spexcel] AS BEGIN –SET NOCOUNT ON added to prevent extra result sets from –interfering with SELECT statements. SET NOCOUNT ON; DECLARE @count int IF OBJECT_ID('tempdb..#TempResult') […]

如何通过ADO VBA提供更新存储过程的十进制input参数(可以为空)

我正在尝试在Excel中创build一个模板,以便客户批量更新SQL Server数据库。 棘手的部分是一些数字列,例如,我正在testing的是Estimated_Amt 。 值可能是空的,我试过,还是不知道是否为空,如何通过这个值来更新存储过程。 以下是我如何设置参数: Estimated_Amt = .Cells(iRowNo,8) If (.Cells(iRowNo, 8) = "") Then cmd.Parameters.Append cmd.CreateParameter("@Estimated_Amt", adVarChar, adParamInput, DBNULL.Value) Else cmd.Parameters.Append cmd.CreateParameter("@Estimated_Amt", adVarChar, adParamInput, CStr(Estimated_Amt)) End If 我分别尝试了AdDouble和AdDecimal ,并且没有成功捕获空值或空值,并且使用AdVarchar仍然无法正确工作 而调用程序部分如下: cmd.CommandText = "SP_RIBulkyUpdate @CaseNumber = " & CaseNumber & ", " & _ "@Estimated_Amt = " & Estimated_Amt 任何build议正确设置input参数? 谢谢。

使用VBA从ADODB中使用variables返回SQL Server存储过程的结果

我正在开发一个rec过程,它将数据从SQL Server数据库中导出到Excel中,然后从另一个应用程序中将这两个数据源进行比较。 为此,我已经开始使用基础知识,并编写了一些将数据提取到ADODBlogging集中的代码,并将其从SQL Server视图拖放到Excel工作表中。 这按预期工作。 我需要查询更加dynamic,因为它是真正的查询相当资源密集型,我认为最好是使用存储过程,将parameter passing给查询,只返回我需要的结果集。 我不希望SQL查询在VBA中变得复杂,这就是为什么我不能在那里定义查询。 当我运行下面的代码时,它不会将logging返回到logging集并退出。 在Management Studio中使用相同的参数运行存储过程给出了SSMS中的预期结果。 我是否错过了如何将这些结果返回到logging集? 存储过程: CREATE PROCEDURE [dbo].[JoshTest] @AccCode nvarchar(50) AS SET NOCOUNT ON; SELECT [Account_SKey], [Hierarchy_SKey], [Account_Code], [Leaf] FROM [dbo].[VW_DIM_ACCOUNT_LEAF] WHERE [Leaf] = @AccCode; GO Excel中的VBA: Sub test_stored_proc() Dim AccountCodeVar As String AccountCodeVar = Range("ACCCODESEL").Value Dim osheet As String 'output sheet Dim orange As String 'output […]

SSIS如何使用不同的参数每次运行相同的存储过程

我有一个简单的SP有2个参数来执行。 输出将进入excel文件。 通过SSIS我想完成以下操作:用第一组参数运行SP并将输出放入Excel中。 使用不同的参数集运行相同的SP,并将输出放置在相同的Excel中,但在不同的选项卡中。 相同的过程12次将结果放入同一个Excel文件中的12个不​​同的选项卡。 我对SSIS相当陌生,我这样做的方式是将12个不同的执行sql任务输出到12个不同的excel文件中。 请如果有一个更有效的方式来实现这将是很大的帮助! 谢谢