访问存储过程中的文本字段并插入另一个表

时间:2009-10-25 15:01:24

标签: sql-server-2005

我正在尝试访问“text”类型并将该值插入到存储过程的另一个表中。我试图把它转换,转换它,但没有任何作用。

我的代码看起来像这样:

Declare @Critique varchar(max), @Feedback varchar(max)
…
…
…
SELECT @Critique = CAST(comments as varchar(max)), @Feedback = CAST(public_critique as varchar(max)) FROM ASCO_vEXTERNAL_REVIEW_APPLICATIONS_LIST WHERE wf_task_assignment_id = @WfTaskAssignmentIDP1

– comments and public_critique are defined as text in view (also tried with table) ASCO_vEXTERNAL_REVIEW_APPLICATIONS_LIST
…
…
…
insert into WF_TASK_ASSIGNMENT_REVIEW (wf_task_assignment_review_id, wf_task_assignment_id, grantee_project_id, comments, public_critique) values (@NewID1, @WfTaskAssignmentIDP2, @GranteeProjectID, @Critique, @Feedback)

请你尽快帮我解决这个问题。我真的很感激。

谢谢, 哈里什

2 个答案:

答案 0 :(得分:0)

你的问题听起来不太好。

不要使用文本,它在许多情况下都不支持,例如where,group by等,所以尝试使用varchar

这只是一个例子

Declare @Critique varchar(max)
set @Critique = (select public_critique  from ASCO_vEXTERNAL_REVIEW_APPLICATIONS_LIST 
 where convert(varchar(50), wf_task_assignment_id ) =@WfTaskAssignmentIDP1)

答案 1 :(得分:0)

我假设WF_TASK_ASSIGNMENT_REVIEW是包含您要写入的text列的那个。

现在,SQL 2005和2008中已弃用text类型。如果可能,请尝试升级WF_TASK_ASSIGNMENT_REVIEW表以使用nvarchar(max)类型。

如果没有,唯一的方法是使用WRITETEXT语句在循环中写入目标列(因为WRITETEXT有一个上限)。请参阅SQL Server文档中的WRITETEXT statement示例。