PHP如何调用SQLServer2012的存储过程并获取返回结果集及出参?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP如何调用SQLServer2012的存储过程并获取返回结果集及出参?相关的知识,希望对你有一定的参考价值。

我服务器的环境:php5.2.5,配置好了“Microsoft drivers for php for sql server”并能使用“sqlsrv”正常连接SQLServer2012数据库。网上找了好久都没能解决问题,请问哪位老师能给出详细的代码?非常感谢!

参考技术A 1、查询SQL中的所有表: Select TABLE_NAME FROM 数据库名称.INFORMATION_SCHEMA.TABLES Where TABLE_TYPE='BASE TABLE' 执行之后,就可以看到数据库中所有属于自己建的表的名称 2、查询SQL中所有表及列: Select dbo.sysobjects.name as Table_name, dbo.syscolumns.name AS Column_name FROM dbo.syscolumns INNER JOIN dbo.sysobjects ON dbo.syscolumns.id = dbo.sysobjects.id Where (dbo.sysobjects.xtype = 'u') AND (NOT (dbo.sysobjects.name LIKE 'dtproperties')) 3、在Sql查询分析器,还有一个简单的查询方法: EXEC sp_MSforeachtable @command1="sp_spaceused '?'" 执行完之后,就可以看到数据库中所有用户表的信息 4、查询总存储过程数:select count(*) 总存储过程数 from sysobjects where xtype='p' 附:xtype类型D = 默认值或 DEFAULT 约束
F = FOREIGN KEY 约束L = 日志FN = 标量函数
IF = 内嵌表函数
P = 存储过程
PK = PRIMARY KEY 约束(类型是 K)
RF = 复制筛选存储过程S = 系统表TF = 表函数
TR = 触发器U = 用户表UQ = UNIQUE 约束(类型是 K)V = 视图X = 扩展存储过程 另:在sqlserver中取得某个数据库中所有表名的sql语句 select sysobjects.name from sysobjects.xtype ='U';SELECT name
WHERE (xtype = 'U') 在数据库的sysobjects表里有这个数据库全部表的信息, xtype值为'U'的就是表名 注意:一般通过上述方法获得全部用户表示都会有一个dtproperties表,SQLSERVER 默认它也是用户表,想要从用户表中排出,需要加上限定条件 status>0,即:select * from sysobjects where xtype='U' and status>0
参考技术B <?php


try 
    $conn = new PDO("sqlsrv:server=.\\SQLExpress;Database=thinkphp","admin","pass1234");
    // 设置 PDO 错误模式,用于抛出异常
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO MyGuests (firstname, lastname, email)
    VALUES ('John', 'Doe', 'john@example.com')";
    // 使用 exec() ,没有结果返回 
    $i = $conn->exec($sql);
    echo "这是返回结果".$i;

catch(PDOException $e)

    echo $sql . "<br>" . $e->getMessage();


$conn = null;
?>

sqlserver 如何修改储存过程的名字

参考技术A

sqlserver 如何修改储存过程的名字, mysql如何修改储存过程名

储存过程重新命名:sp_rename \'oldProc\',\'newProc\',\'object\'
实际上只要了解了sp_rename 就行了,至于引数要根据你重新命名的物件有关

如何修改SQL sever 2008 储存过程的名字?

用系统储存过程sp_rename
EXEC sp_rename \'旧名\', \'新名\'

sqlserver 如何修改储存过程指令码

使用alter proc 就可以修改指令码了
或者在SQL Server Management Studio 中右键你要修改的储存过程,在选单中点选修改储存过程。

如何修改储存过程

重要提示:修改储存过程
在物件资源管理器中,连线到某个资料库引擎例项,再展开该例项。
依次展开“资料库”、储存过程所属的资料库以及“可程式设计性”。
展开“储存过程”,右键单击要修改的过程,再单击“修改”。
修改储存过程的文字。
若要测试语法,请在“查询”选单上,单击“分析”。
若要修改储存过程,请在“查询”选单上,单击“执行”。
若要储存指令码,请在“档案”选单上单击“另存为”。接受档名或使用新名称替换它,再单击“储存”。
安全说明:在物件资源管理器中,连线到某个资料库引擎例项,再展开该例项。
依次展开“资料库”、储存过程所属的资料库以及“可程式设计性”。
展开“储存过程”,右键单击要修改的过程,再单击“修改”。
修改储存过程的文字。
若要测试语法,请在“查询”选单上,单击“分析”。
若要修改储存过程,请在“查询”选单上,单击“执行”。
若要储存指令码,请在“档案”选单上单击“另存为”。接受档名或使用新名称替换它,再单击“储存”。
本回答由提问者推荐

mysql 如何修改储存过程

ALTER PROCEDURE proc_name [characteristic ...]
characteristic:

| SQL SECURITY
| COMMENT \'string\'
This statement can be used to change the characteristics of a stored procedure. More than one change may be specified in an ALTER PROCEDURE statement. However, you cannot change the parameters or body of a stored procedure using this statement; to make such changes, you must drop and re-create the procedure using DROP PROCEDURE and CREATE PROCEDURE.
就是说只能改名字和定义不能改里面的内容。要删了重新建。

如何修改储存过程 (SQL Server Management Studio)

重要提示:修改储存过程
在物件资源管理器中,连线到某个资料库引擎例项,再展开该例项。
依次展开“资料库”、储存过程所属的资料库以及“可程式设计性”。
展开“储存过程”,右键单击要修改的过程,再单击“修改”。
修改储存过程的文字。
若要测试语法,请在“查询”选单上,单击“分析”。
若要修改储存过程,请在“查询”选单上,单击“执行”。
若要储存指令码,请在“档案”选单上单击“另存为”。接受档名或使用新名称替换它,再单击“储存”。
安全说明:在物件资源管理器中,连线到某个资料库引擎例项,再展开该例项。
依次展开“资料库”、储存过程所属的资料库以及“可程式设计性”。
展开“储存过程”,右键单击要修改的过程,再单击“修改”。
修改储存过程的文字。
若要测试语法,请在“查询”选单上,单击“分析”。
若要修改储存过程,请在“查询”选单上,单击“执行”。
若要储存指令码,请在“档案”选单上单击“另存为”。接受档名或使用新名称替换它,再单击“储存”。

如果相关物件未更新为反映已对储存过程所做的更改,则更改储存过程的名称或定义可能导致相关物件失败。有关详细资讯,请参阅

以上是关于PHP如何调用SQLServer2012的存储过程并获取返回结果集及出参?的主要内容,如果未能解决你的问题,请参考以下文章

MyBatis从入门到放弃五:调用存储过程(SQLServer2012)

php pdo调用SQLServer存储过程无法获取返回结果

sql server显示远程过程调用失败怎么办

sql server 存储过程如何调用存储过程

sqlserver如何调用外部数据库的存储过程

sqlserver如何自动调用存储过程, 24小时执行一次?