sqlserver存储过程临时表、exec、返回值、php调用时注意用法

存储过程中:

exec pro  这种语法执行存储过程

exec(@xxx) 这种执行一条普通sql语句

 如果要返回值,需要声明 @tpl varchar(100) OUTPUT 这样一个入参

比如执行查询

set @sql = N'SELECT * from '+@tablename

exec(@sql)

 

临时表创建方式:

    create table #TmpTable (
     tableName varchar(100) NOT NULL
    )

如果一个再存储过程中调用另一个存储过程,并且另一个存储过程有个未知字段得返回值,可以先临时把返回数据存到临时表

insert into #TmpTable exec proce 'xxxx','xxxx','xxxx','xxxx','','','','','',''

 

php如果要调用,例如laravel,存储过程有返回值,直接调用会报错:

The active result for the query contains no fields

解决方式:

执行存储过程之前先执行 SET NOCOUNT ON,例如:

$tmpTable = $DB->select("SET NOCOUNT ON;EXEC getXxxx '1' ");

(参考:php - "The active result contains no fields" using PDO with MS SQL - Stack Overflow
posted @ 2022-06-03 09:55  叨叨的蜗牛  阅读(1142)  评论(0)    收藏  举报