Tag: dynamicsql

在SQL存储过程中将dynamicSQL结果转换为临时表

代码如下: ALTER PROCEDURE dbo.pdpd_DynamicCall @SQLString varchar(4096) = null AS Begin create TABLE #T1 ( column_1 varchar(10) , column_2 varchar(100) ) insert into #T1 execute ('execute ' + @SQLString ) select * from #T1 End 问题是,我想调用不同的过程,可以给不同的列。 因此,我将不得不一般定义表#T1。 但我不知道如何。 任何人都可以帮我解决这个问题吗?

在存储过程中使用带有dynamicSQL的游标

我有一个在存储过程中创build的dynamicSQL语句。 我需要使用游标来遍历结果。 我很难搞清楚正确的语法。 这是我正在做的。 SELECT @SQLStatement = 'SELECT userId FROM users' DECLARE @UserId DECLARE users_cursor CURSOR FOR EXECUTE @SQLStatment –Fails here. Doesn''t like this OPEN users_cursor FETCH NEXT FROM users_cursor INTO @UserId WHILE @@FETCH_STATUS = 0 BEGIN EXEC asp_DoSomethingStoredProc @UserId END CLOSE users_cursor DEALLOCATE users_cursor 什么是正确的方法来做到这一点?

为查询string声明variables

嘿,所有,我想知道是否有办法在MS SQL Server 2005中做到这一点: DECLARE @theDate varchar(60) SET @theDate = '''2010-01-01'' AND ''2010-08-31 23:59:59''' SELECT AdministratorCode, SUM(Total) as theTotal, SUM(WOD.Quantity) as theQty, AVG(Total) as avgTotal, (SELECT SUM(tblWOD.Amount) FROM tblWOD JOIN tblWO on tblWOD.OrderID = tblWO.ID WHERE tblWO.Approved = '1' AND tblWO.AdministratorCode = tblWO.AdministratorCode AND tblWO.OrderDate BETWEEN @theDate ) … etc 可能做什么? 大卫

SQL更新另一个字段的一个表的字段

我有两个表格: A [ID, column1, column2, column3] B [ID, column1, column2, column3, column4] A将永远是B子集(意味着A所有列也都在B )。 我想用A中所有列的A的数据更新B具有特定ID的logging。 此ID存在于A和B 。 有没有UPDATE语法或任何其他方式来做到这一点,而不指定列名称,只是说“设置A的所有列” ? 我正在使用PostgreSQL,所以一个特定的非标准命令也被接受(但不是首选)。

当我尝试使用sp_executesql时,为什么会得到“Procedure expectpects parameter”@statement“types为”ntext / nchar / nvarchar“。

为什么我得到这个错误 Procedure expects parameter '@statement' of type 'ntext/nchar/nvarchar'. 当我尝试使用sp_executesql?

删除名称以特定string开头的所有表

我想要一个脚本删除所有名称以给定string开头的表格。 我相信这可以用一些dynamicsql和INFORMATION_SCHEMA表来完成。 如果有人有脚本,或者可以快速敲一下,请张贴。 如果没有人在我自己找出答案之前发布答案,我会发布我的解决scheme。

在plpgsql函数中将表名和列名定义为参数?

它一定很简单,但我正在做我的第一步到Postgres函数,我找不到任何工作… 我想创build一个函数,将修改表和/或列,我找不到指定我的表和列作为我的函数参数的正确方法。 就像是: CREATE OR REPLACE FUNCTION foo(t table) RETURNS void AS $$ BEGIN alter table t add column c1 varchar(20); alter table t add column c2 varchar(20); alter table t add column c3 varchar(20); alter table t add column c4 varchar(20); END; $$ LANGUAGE PLPGSQL; select foo(some_table) 在另一种情况下,我想有一个函数来改变某个表的某个列: CREATE OR REPLACE FUNCTION foo(t table, […]

从SQL 2008中的外键关系生成删除语句?

是否有可能通过脚本/工具生成基于表fk关系的删除语句。 即我有表:DelMe(ID),有30个表的fk引用它的ID,我需要先删除,有一些工具/脚本,我可以运行,将生成基于FK关系的30删除语句为了我 ? (顺便说一句,我知道关于级联删除关系,我不能在这个现有的数据库中使用它) 我正在使用Microsoft SQL Server 2008

如何在dynamicSQL语句中使用表variables?

在我的存储过程中,我在过程之上声明了两个表variables。 现在我正在尝试在dynamicsql语句中使用该表variables,但在执行该过程时出现此错误。 我正在使用Sql Server 2008。 这是我的查询的样子, set @col_name = 'Assoc_Item_' + Convert(nvarchar(2), @curr_row1); set @sqlstat = 'update @RelPro set ' + @col_name + ' = (Select relsku From @TSku Where tid = ' + Convert(nvarchar(2), @curr_row1) + ') Where RowID = ' + Convert(nvarchar(2), @curr_row); Exec(@sqlstat); 我得到以下错误, 必须声明表variables“@RelPro”。 必须声明表variables“@TSku”。 我试图把表的dynamic查询的string块外,但无济于事。

nvarchar(max)仍然被截断

所以我在MS SQL Server 2008中编写了一个存储过程。这是一个非常长的查询,我必须dynamic编写它,所以我创build了一个名为@Query的variables,并将其设置为NVARCHAR(MAX)types。 现在有人告诉我,在SQL Server的现代版本中, NVARCHAR(MAX)可以容纳大量的数据,比原来的4000个字符更大。 但是,当我尝试打印出来时, @Query仍然被截断为4000个字符。 DECLARE @Query NVARCHAR(max); SET @Query = 'SELECT…' — some of the query gets set here SET @Query = @Query + '…' — more query gets added on, etc. — later on… PRINT LEN(@Query) — Prints out 4273, which is correct as far as I can tell […]