这样的语句在Oracle中怎么写?

www_datasky_cn 2007-11-06 03:35:11
这是sql server中的一个存储过程:

CREATE PROCEDURE dbo.sp_insert
@tblName nvarchar(255), --表名
@strCols nvarchar(4000), --列名
@strValues ntext --内容
as
begin
exec ( ' insert into [' + @tblName + '](' + @strCols + ') values(' + @strValues + ')' )
end

请问在oracle中怎么写?
注意strValues 是ntext类型的,因为varchar 类型有长度限制,而我的值可能是很长的文章。

在oracle中如何执行这样的语句呢?
...全文
153 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Croatia 2007-11-07
  • 打赏
  • 举报
回复
例子:

declare
tbl in varchar2 default 'test';
cid integer;
begin
cid := DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(cid, 'create table ' || tbl || ' (ID number(9))', dbms_sql.v7);
DBMS_SQL.CLOSE_CURSOR(cid);
dbms_output.put_line ('end');
exception
when OTHERS then
dbms_output.put_line ('** ERROR **');
end;
/
www_datasky_cn 2007-11-07
  • 打赏
  • 举报
回复
@libin_ftsafe 的写法,似乎无法解决长度的问题。
@Croatia 能否给个例子看看啊?
Croatia 2007-11-07
  • 打赏
  • 举报
回复
DBMS_SQL可以用在不超过32K的动态SQL上面。
skyboy0720 2007-11-06
  • 打赏
  • 举报
回复
楼上的5角,不了解nvarchar类型+ntext类型会变成什么样,就不要乱说。
AFIC 2007-11-06
  • 打赏
  • 举报
回复
字段你可以用nclob,执行我看你还是存sql文件吧……
Croatia 2007-11-06
  • 打赏
  • 举报
回复
楼上的双星,人家就strCols 字段就已经是4000了,
ntext可以保存2^30 - 1 (1,073,741,823) 个UNICODE文字,早超出去了。
子陌红尘 2007-11-06
  • 打赏
  • 举报
回复
DECLARE SQLStr VARCHAR2(4000)

SQLStr :='INSERT INTO ' || tblName || '('|| strCols || ') values(' || strValues || ')'

EXECUTE IMMEDIATE SQLStr

17,082

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧