我有2个存储过程 p_a和p_b
p_b有一个入参 @date datetime类型
p_b最后是一个select * 的结果集,有4列我直接
exec p_b @datein='2010-11-03'没有问题,能看到4列的结果集然后在p_a里面先建一个格式完全正确的临时表,也是4列,
再在p_a里面这样
insert into #tmp
exec p_b @datein='2010-11-03'
就报错'消息 0,级别 11,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。'如果我在p_a里面
insert into #tmp
exec p_b
则不会报错,当然,因为没有给入参,所以没有任何结果会被插入到临时表#tmp中
好像是带了参数就不行,求解啊
p_b有一个入参 @date datetime类型
p_b最后是一个select * 的结果集,有4列我直接
exec p_b @datein='2010-11-03'没有问题,能看到4列的结果集然后在p_a里面先建一个格式完全正确的临时表,也是4列,
再在p_a里面这样
insert into #tmp
exec p_b @datein='2010-11-03'
就报错'消息 0,级别 11,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。'如果我在p_a里面
insert into #tmp
exec p_b
则不会报错,当然,因为没有给入参,所以没有任何结果会被插入到临时表#tmp中
好像是带了参数就不行,求解啊
exec p_b (@datein='2010-11-03')可以吗?
SET @dateinn ='2010-11-03'INSERT INTO #tmp
SELECT *
from
OPENROWSET
('sqloledb','Trusted_Connection=yes;Database=mydb',
'SET FMTONLY OFF;set nocount on;exec p_b @datein=@dateinn') AS a报错链接服务器"(null)"的 OLE DB 访问接口 "SQLNCLI" 返回了消息 "无法完成延迟准备。"。
消息 8180,级别 16,状态 1,第 1 行
未能准备语句。
消息 137,级别 15,状态 2,第 1 行
必须声明标量变量 "@dateinn"。
select * into 表 from openrowset(...)--先要建立表#temp,然后
insert #temp(col...)
exec exec p_b @datein='2010-11-03' --两个exec
--注意字段的对应
而你说的insert into #tmp exec p_b 没有报错是因为:你没有输入参数,p_b跟根本就没有访问 #tmp
所以没有报错!
语法无错,估计是不小心输入的看不见的中文字符,如中文空格。查看返回结果集有无问题在存储过程中去注释掉
--insert into #tmp
单执行exec p_b @datein='2010-11-03'
看看有无问题