ms sql变量问题:提示参数对象无效!
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ms sql变量问题:提示参数对象无效!相关的知识,希望对你有一定的参考价值。
declare @table_name nvarchar(12)
select @table_name='test'
select * from @table_name
执行后会,提示对象@table_name无效?难道表名不能使用参数吗?数据库中看有test
这个表!
变量不能做为表名,如果要执行
declare @table_name nvarchar(12)
declare @sql nvarchar(4000)
select @table_name='test'
set @sql = 'select * from ' + @table_name
execute sp_executesql @sql
这样试试 参考技术A 你这种 表名字 是 变量的情况.
需要使用 动态 SQL 的处理机制
例如如下:
http://hi.baidu.com/wangzhiqing999/blog/item/6f6da5fee476db869f51465d.html
oracle带参数的存储过程,一直提示sql无效sql语句。求高手指点
create or replace procedure cpgd_insert
(
sj in varchar2;
)
as
declare sl number(10);
begin
select count(1) into sl from dba_views where view_name = 'jbftjl' and OWNER='WINE';
if sl=1 then
insert into dg_daybb (epname,gangzhong,ph,guige,rbcp,ybcp,riqi) select '纵剪机' as epname ,gangzhong,ph,guige, rbcp,ybcp,to_date(sj,'yyyy-mm-dd') as riqi from jbftjl;
end if;
end;
execute cpgd_insert ('2012-06-08');
create or replace procedure cpgd_insert(sj in varchar2) as
sl number(10);
begin
select count(1)
into sl
from dba_views
where view_name = 'jbftjl'
and OWNER = 'WINE';
if sl = 1 then
insert into dg_daybb
(epname, gangzhong, ph, guige, rbcp, ybcp, riqi)
select '纵剪机' as epname,
gangzhong,
ph,
guige,
rbcp,
ybcp,
to_date(sj, 'yyyy-mm-dd') as riqi
from jbftjl;
end if;
end; 参考技术B begin
cpgd_insert ('2012-06-08');
end;
还有个问题,你insert后没提交,所以插入不到表里
insert into 后加一句
commit;
在oracle里,insert update delete后必须提交,否则插不进数据不说 ,还会造成锁表,请牢记追问
还是提示无效sql
追答你是在执行create 过程中报错,还是在执行
begin
cpgd_insert ('2012-06-08');
end;
的时候报错?有截图没有?
创建过程的时候没报错,执行的时候就
你是用什么执行的?
sqlplus?pl/sql?还是其他?
plqsl
追答这样,你在左边列表找到procedures
点开,找到你的这个cpgd_insert
然后右键,点测试,下边有个输入参数的地方
你看看能跑成功不
或者在一个sql窗口执行我那句
百度hi里加你了,我给你调吧
刚开始没加也一样
参考技术D 第一,你sj in varchar2 后面不应该有分号第二,不应该有declare这个关键字
以上是关于ms sql变量问题:提示参数对象无效!的主要内容,如果未能解决你的问题,请参考以下文章
SQL函数问题,提示传递给 LEFT 或 SUBSTRING 函数的长度参数无效。
SQL Sever 2008 对象名无效 SELECT * FROM Adventureworks.dbo.Stores 可执行 下划线提示对象名无效
oracle带参数的存储过程,一直提示sql无效sql语句。求高手指点