【发布时间】:2019-02-12 20:27:22
【问题描述】:
我正在尝试创建一个表,该表将显示每个表名和 ID 列的前三个字符(每个表都有此列),然后将该数据放入表中。我们正在使用它来帮助映射 Salesforce 组织中的依赖关系,该依赖关系使用 dbAMP 复制到 SQL 上。我尽可能地修改了下面的代码,并正在寻求帮助来完成它。
更新:问题的前半部分已解决,现在运行代码以给出 ID 的前三个字符。我仍然可以使用帮助来转换此代码以将结果假脱机到一个表中。
USE Salesforce
GO
IF OBJECT_ID('tempdb..#tempResults') IS NOT NULL
DROP TABLE #tempResults
CREATE TABLE #tempResults
(
[Object_ID] VARCHAR(3)
--, [org] VARCHAR(100)
, [Table_Name] VARCHAR(100)
)
DECLARE cur CURSOR FOR
SELECT
'SELECT DISTINCT LEFT(' + QUOTENAME(c.COLUMN_NAME) + ',3) AS
[Object_ID], '''
--+ QUOTENAME(TABLE_CATALOG) + ' as [Org], '
+ QUOTENAME(TABLE_NAME) + ''' as [Table_Name] FROM '
+ QUOTENAME(TABLE_CATALOG) + '.' + QUOTENAME(TABLE_SCHEMA) + '.' + QUOTENAME(TABLE_NAME)
FROM INFORMATION_SCHEMA.COLUMNS AS c
WHERE
c.[DATA_TYPE] IN ('nchar','varchar', 'nvarchar')
AND c.[CHARACTER_MAXIMUM_LENGTH] = 18
and c.TABLE_NAME not like '%upload%'
and c.TABLE_NAME not like '%Delta%'
and c.TABLE_NAME not like '%Update%'
and c.TABLE_NAME not like '%Previous%'
and C.COLUMN_NAME = 'ID'
DECLARE @cmd VARCHAR(MAX);
OPEN cur;
FETCH NEXT FROM cur INTO @cmd;
WHILE @@FETCH_STATUS = 0
BEGIN
--PRINT @cmd
INSERT INTO #tempResults
EXEC(@cmd);
FETCH NEXT FROM cur INTO @cmd;
END
CLOSE cur;
DEALLOCATE cur;
SELECT * FROM #tempResults
我没有将列 ID 修剪为前 3 个字符,也没有输出到表格。我对游标不太熟悉,所以我会很感激任何帮助。谢谢,
【问题讨论】:
标签: tsql salesforce dbamp