问题 我有一个cakephp应用程序,我称之为存储过程: $this->FileUpload->query('exec sproc_runjob_ProcessTests', false); 此过程拾取了上传的文件并对其进行处理.有时人们上传多个文件,每个文件一次为每个文件上传一次. 问题是我遇到了这个错误: Database Error Error: SQLSTATE[42000]: [Microsoft][SQL Server Native Client 11.0][SQL Server] SQLServerAgent Error: Request to run job ProcessTests (from User [redacted]) refused because the job already has a pending request from User [redacted]. SQL Query: exec s
以下是关于 stored-procedures 的编程技术问答
在ODBC_PREPARE语句中有些新事物,并且在尝试执行需要DateTime输入参数的存储过程时遇到问题. 如果我要使用ODBC执行而不使用以下所示的准备好的语句,则没有问题... $dblink = db_connect(); $query = "EXEC dbo.[ProcedureName] '" . $dateinput . "'"; odbc_exec($dblink, $query); 使用ODBC_PREPARE,我会遇到错误(仅适用于带有DateTime输入参数的过程).下面的示例... function execute_db($dblink, $query, $params){ $n = sizeof($params); for($i=0; $i
我有一个典型的基于灯的站点 + Zend框架,其中我有一个基础表和摘要表.摘要表用于在报告中显示数据. 基础表 - ID | Status 1 | 1 2 | 1 3 | 2 4 | 2 5 | 1 6 | 1 摘要表 - Status | Count 1 | 4 2 | 2 基本表将以每天平均20次更改(插入,更新,删除). 当前,我正在使用触发器来调用存储过程,该过程将根据基础表更新摘要表. 这是存储过程. CREATE PROCEDURE UpdateSummary() BEGIN UPDATE summary a INNER JOIN (SELECT status, count(*) c from base group by status) b ON a.status = b.status SET a.count = b.c; END 我有3个触发器(每个触发器一个 - 插入,删除和更新).我已经在下面显示了单独的插入
我们正在构建生产PHP-MYSQL应用程序,并希望MySQL存储过程成为数据库的中央防弹门户.重复的键,未找到表,服务器实例下降等等等所有类型的错误都需要被困并传达到基于php Web的ui中,并且交易在此类错误时在存储的proc中回滚. 我正在使用php mysqli并调用一个存储过程如下: $stmt = mysqli_prepare($db, "call my_stored_proc(?, ?, ?, @ptid)"); if ($stmt && mysqli_stmt_bind_param($stmt, "sss", 'p1', 'p2', 'p3') && mysqli_stmt_execute($stmt) && mysqli_stmt_close($stmt)) { echo "All fine!" } else { echo mysqli_error($db); db_disconnect($db); exit; }
我很难将参数传递到带有PDO的SQL Server上的存储过程. 我可以在不需要参数的过程上成功执行查询,并且具有这样的代码: : $dbConnection = Craft::createComponent(array( 'charset' => 'utf8', 'class' => 'CDbConnection', 'autoConnect' => true, )); $dbConnection->connectionString = 'sqlsrv:Server=MYSERVER;Database=My_Database'; $dbConnection->username = 'MyUsername'; $dbConnection->password = 'MyPasword'; $command = $dbConnection->createCommand( 'MYSERV
我已经阅读了 htttp ://php.net/manual/en/mysqli.quickstart.stored-procedures.php 和其他来源,但仍然不确定如何用?调用存储过程(如准备好的语句) 是否可以将参数绑定到存储过程,在此类似的内容中: $mysqli->query("CREATE PROCEDURE p(IN id_var INT) BEGIN INSERT INTO test(id) VALUES(id_var); END;")) $mysqli->bindParam("i", $some_int); $mysqli->query("CALL p"); 解决方案 绑定参数是PHP侧操作;存储过程是MySQL的事情.这两个没有相关性,不应这样处理. 使用准备好的语句和参数结合,您可以使用prepare()方法定义查询,然后使用bind_param()绑定到? s.因此,以您的榜样,准备好的陈述方法将看起来像这样:
我正在使用MySQL中的存储过程,该过程创建了3个临时表,可从数据库的表中存储记录,然后从存储记录的那些子集中选择最终结果. 问题是,尽管假定存储过程中的温度表是每个MySQL会话唯一的,但我从存储过程中的不同调用中获得了混杂的结果. 让我们用真实情况Escenario解释问题: 我们得到了用户A,B,C 访问我的网站在"同一时刻"进行不同的搜索. 用户A搜索" AAAA",用户B搜索" BBBB"和用户C搜索" CCCC",然后 WebServer在"同一时刻" 上对数据库服务器进行3个调用 . 存储过程的调用是: call SP('AAAA'); call SP('BBBB'); call SP('CCCC'); 每个调用的结果应为类似: 用于致电SP('aaaa'); Record_AAAA1 Record_AAAA2 Record_AAAA3 呼叫SP('BBBB'); Record_BBBB1 Record_BBBB2
我有一个带有4个菜单(产品,供应商,购买,客户)的PHP代码.每个菜单都有自己的存储过程.每个平均值都有以下代码: 产品代码: query("call selectproducts()"); $i=1; while($row=mysqli_fetch_array($sql)){ $id=$row['prodid']; $date=$row['prodname']; $item=$row['proddescription']; $qtyleft=$row['prodsupplier']; $qty_sold=$row['proddate']; $price=$row['prodprice']; $sales=$row['prodquantity']; if($i%2){ ?>
亲爱的每个人都能提供帮助的人, 我有这个php> mongodb问题,我想通过php. 我没有参数,只有一个看起来像这样的返回的JSON对象: {"archived":[the number of the archived messages]} 它在数据库服务器上的外壳中效果很好,但是当我尝试通过PHP驱动程序调用它时,它不会"说"任何内容... 我的代码看起来像这样: $DB->execute( new MongoCode( "function () { return archiveMessages(); }" ) ); 我也尝试过以这种方式使用: $DB->execute("archiveMessages()"); 请帮忙,我已经陷入了这一问题...我只想在更新集合后打电话给sh*t ... 预先感谢您 b 解决方案 您确定使用相同的数据库吗?尝试将其简化为一个基本示例,例如, $m =
我正在尝试计算当天用户的登录时间和当今分钟. 我的会话表为 id| user_id | logintime |logouttime | isactive 1| 100 | 2017-06-12 22:53:53 |2017-06-13 02:53:53 | 0 2| 100 | 2017-06-13 08:53:53 |2017-06-13 09:13:53 | 0 3| 100 | 2017-06-13 10:53:53 |2017-06-13 11:33:53 | 0 4| 100 | 2017-06-13 11:53:53 |2017-06-13 12:13:53 | 0 5| 100 | 2017-06-13 12:53:53 |NULL (As user is currently logged in)| 1 我想要一个可以计算当天的总登录日的查询,
IM使用php 5.4与SQLSRV扩展程序一起使用,我正在尝试调用此示例存储过程(Northwind数据库): create PROCEDURE [dbo].[GetCategories] @CategoryID int = null AS SELECT * from dbo.Categories where CategoryID= IsNull(@CategoryID,CategoryID) 我正在使用此sqlsrv_query语法: $sql = "{ call dbo.GetCategories (?)}"; $catID=2; $params = array($catID); $stmt = sqlsrv_query( $conn, $sql,$params); 我想在$ params中指定参数名称和值,就像这样: $sql = "dbo.GetCategories"; $catID=2; $params = array("@CategoryID"
我是一位老式的开发人员,只是进入www编程世界.我正在使用HTML,CSS,PHP和MSSQL Server 2008 R2开发一个应用程序. 在我的应用程序中,我正在使用存储过程来插入,修改,删除或查询信息,从/到数据库.根本不使用TSQL指令,只需执行PHP代码中的存储过程. 我正在使用PHP 5和SQLSRV驱动程序进行数据库交互. 到目前为止一切正常,但是现在我陷入了插入件...如果一切正常,SP插入了记录,如果没有,则没有...但是我没有看到结果直到我再次查询表,只是看记录是否存在. im使用PHP中的以下代码运行将记录插入表中的SP: function spinserta($tabla, $columnas, $valores, $cnct) { $stmt = 'Exec spinsert @tabla=?,@columnas=?,@valores=?'; $params = array($tabla,$colu
我正在尝试找出一种检测MySQL存储过程中回滚的方法,以便我可以从PHP脚本相应地处理情况,但是到目前为止,我找不到任何解决方案. 我的存储过程看起来像这样: delimiter | create procedure multi_inserts( IN var1 int(11), . . . IN string1 text ) BEGIN declare exit handler for sqlexception rollback; declare exit handler for sqlwarning rollback; START TRANSACTION; insert into table1(a,b,c,d) values(var1,var2,var3,var4); ins
我正在使用php的SQL Server驱动程序连接到SQL Server 2008 Express.现在,我正在尝试通过存储过程替换所有选择,更新和插入语句.对于仅包含SELECT语句的SPS,这很好.但是现在我尝试通过更新进行操作,并且我不断收到错误消息"直接执行SQL;没有光标".我可以从管理工作室带有相同的参数值的SP罚款. 有什么想法? 欢呼 Alex 编辑:这是一个更新过程.有趣的部分是,该过程实际上是罚款的,并像预定的那样更新数据.但这仍然返回错误,导致例外. 首先,失败的PHP代码: if (! $this->Result = sqlsrv_query($this->Conn, $strQuery, $arrParameters, array("Scrollable"=>SQLSRV_CURSOR_STATIC))) { $this->sendErrorMail($strQuery, $arrParameters); throw
对于未来的用户:此问题的底部包含校正的工作代码. 我知道选择 *不是最好的,但是在此示例中,我试图从PHP调用存储过程并返回整个结果集,以便我可以在代码中循环循环. 这是我当前的存储过程: USE [hanoncs_AskMe] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO SET NOCOUNT ON; GO CREATE PROCEDURE [hanoncs_hanoncs].[CommentsTemp] @QuestionID INT AS BEGIN BEGIN TRANSACTION IF Object_id('#viewquestioncomments', 'U') IS NOT NULL DROP TABLE #viewquestioncomments; CREATE TABLE #viewquestioncomments
我正在使用以下代码: use Doctrine\ORM\Query\ResultSetMapping; ... ... ... ... $em = $this->get( 'doctrine.orm.entity_manager' ); $rsm = new ResultSetMapping(); $query = $em->createNativeQuery( 'CALL procedureName(:param1, :param2)', $rsm ) ->setParameters( array( 'param1' => 'foo', 'param2' => 'bar' ) ); $result = $query->getResult(); //$result = $query->execute(); // Also tried $em->flush();
我正在使用返回错误代码的SQL Server存储过程;这是Sp. 的非常简单的片段 DECLARE @ret int BEGIN SET @ret = 1 RETURN @ret END 我可以使用MSSQL扩展名来获得返回值: mssql_bind($proc, "RETVAL", &$return, SQLINT2); 但是,我不知道如何访问PDO中的返回值;我宁愿不使用OUT参数,因为已经编写了很多存储过程.这是我当前如何在php中调用该过程的示例. $stmt = $this->db->prepare("EXECUTE usp_myproc ?, ?"); $stmt->bindParam(1, 'mystr', PDO::PARAM_STR); $stmt->bindParam(2, 'mystr2', PDO::PARAM_STR); $rs = $stmt->execute(); $result = $stmt->fetchAll(PDO::FETC
我需要通过php中的ODBC序列地调用两个存储过程: #run stored procedure 1 $query = "Shipped_Not_Shipped_Rep ".$_GET['rep_id']; $result = odbc_exec($dbh, $query); odbc_result_all($result); #run stored procedure 2 $query = "Shipped_Not_Shipped_Account ".$_GET['account_id']; $result = odbc_exec($dbh, $query); odbc_result_all($result); 第二次存储过程后,我在PHP中遇到此错误: 警告:odbc_exec()[function.odbc-exec]:sql错误: [unixodbc] [freetds] [SQL Server]无效 光标州,SQL州24000 IN sqlexectirect